Défi
Pour chaque caractère de la chaîne, à l'exception du dernier, procédez comme suit:
Sortez le caractère actuel.
Suivi de la sortie aléatoire de la liste suivante un nombre aléatoire de fois entre 1 et 5 (inclus):
- Le personnage actuel
- Le caractère suivant de la chaîne
- La version Switchcase du personnage sur lequel vous vous trouvez actuellement
- La version switchcase du caractère suivant de la chaîne.
Cas de test
String
-> SSSTSStrTrIiinIIngn
, . , . , . Hello world!
-> ,,, .. , ,, .... , , .. .. . HHH HHEeelLlLllooO wwOworOOrrrRllDd!!D
Programming Puzzles and Code Golf
-> PrPPrRrOooooogggRgGraAraaaMMMmmmimMIiininGGgG PPPPuZzZZzZzzZzllLLEEeEsEsssS a aANnNddD C COCoooOOdeDe E GGGoOllFFf
Remarques
- Vous devez uniquement appliquer la version switchcase d'un caractère si le caractère fait partie de l'alphabet (AZ et az).
- Votre fonction aléatoire n'a pas besoin d'être uniforme, mais elle doit toujours avoir une chance de retourner n'importe quel élément de la liste donnée.
- Vous êtes autorisé à utiliser n'importe quel format d'E / S standard.
- Vous pouvez supposer que la longueur de l'entrée est supérieure ou égale à deux.
- Vous pouvez supposer que l'entrée se compose uniquement de caractères ASCII.
- Le titre n'est pas un cas de test (il n'est pas intentionnel s'il s'agit d'un cas de test valide).
- Switchcase signifie mettre le caractère en minuscule s'il est en majuscule et le mettre en majuscule s'il est en minuscule.
String
produitSSSTSStrTrIiinIIngn
[S]SSTSS [t]rT, [r]I, [i]inII, [n]gn
où les caractères entre les blocs sont les premiers points (" Sortie du caractère actuel "), et les autres caractères sont 1-5 fois au hasard l'un des quatre choix pour cela personnage. Mais je suis d'accord, des explications plus explicites seraient appropriées. Mis à part le cas de test, il n'était pas particulièrement clair que nous devions choisir un choix aléatoire 1-5 fois. Au lieu de choisir un choix aléatoire répété 1 à 5 fois (comme le fait actuellement la réponse Gaia).Réponses:
Gaia , 25 octets
Essayez-le en ligne!
Merci à Kevin Cruijssen d' avoir signalé 2 bugs!
Notez que
4ṛ
c'est parce queṛ
est implémenté pour un entierz
comme pythonrandom.randint(1,z+1)
, qui retourne un entierN
tel que1<=N<=z+1
.la source
SSSTSStrTrIiinIIngn
([SSSTSS, trT, rI, iinII, ngn]
) semble refléter cela, et n'est actuellement pas une sortie possible dans votre programme (je pense).5ṛ
peut entraîner6
pour une raison quelconque Essayez-le en ligne ? PS: N'y a-t-il pas un entier à la liste à distance, ou une boucle à distance à Gaia?for
construction de type, mais je suis presque sûr queₓ
ce n'est même pas documenté sur la page wiki.APL (dzaima / APL) , 23 octets
Fonction de préfixe tacite anonyme.
Essayez-le en ligne!
2(
…)/
Appliquer la fonction tacite d'infixe suivante entre chaque paire de caractères:-
le boîtier⍤
de commutation de,
la concaténation de la paire,,
ajouter la concaténation de la paire à celle{
…}⊇
Choisissez parmi les éléments suivants:?5
nombre aléatoire dans la plage 1… 54⍴⍨
autant de quatre?
indices aléatoires pour ceux∊
ϵ nlist (aplatir)la source
Perl 6 , 60 octets
Essayez-le en ligne!
La partie minuscule / majuscule est un peu ennuyeuse.
la source
$/
et$0
ensemble et de l'utiliser.lc
sur cette chaîne, puis de créer une copie de cette chaîne et de l'utiliser.uc
, et de concaténer ces deux ensemble? Je ne sais pas si cela est même possible, ou plus court que votre position actuelle$/.lc,$/.uc,$0.lc,$0.uc
, mais cela signifierait que vous utiliseriez$/
,$0
,.lc
et.uc
une fois chacun.(.lc~.uc for $0~$/).comb
c'est plus long. Perl 6 veut vraiment distinguer les chaînes et les listes, donc"abc"[0] eq "abc"
(il prétend être une liste à un seul élément).{.lc,|.uc}($/,|$0)
pour -5 octets, et en utilisant simplement la liste des correspondances{.lc,|.uc}(@$/)
pour -8 octets. tio.run/…Gelée , 12 octets
Essayez-le en ligne!
la source
Bash , 121 octets
-20 octets grâce à Nahuel
-9 octets grâce à roblogic
Essayez-le en ligne!
Réponse originale
Bash , 150 octets
J'ai fait très peu de coups de golf et essayé d'améliorer ma bash, donc tout commentaire est le bienvenu.
Essayez-le en ligne!
Le code est une boucle simple à travers les caractères définissant le caractère actuel
c
et suivantn
, puis créant un tableau des 4 possibilités, répétant l'une d'entre elles pour en avoir exactement 5. Ensuite, nous mélangeons ce tableau, puis choisissons n éléments, où n lui-même est aléatoire entre 1 et 5.la source
printf %s "$c"
do
etdone
peut être remplacé par non documenté{
et}
Python 2 , 107 octets
Essayez-le en ligne!
la source
05AB1E ,
1817 octetsInspiré par la réponse Gaia de @Giuseppe .
-1 octet grâce à @Shaggy .
Essayez-le en ligne 10 fois ou vérifiez tous les cas de test 10 fois .
Explication:
la source
INè
, pourriez-vous enregistrer quelque chose en appuyant sur le premier caractère dey
?¨vNUy5LΩFy¹X>è«D.š«Ω?
t
,T
ous
pour l' entrée"String"
dans votre programme, alors que il est censé toujours commencer par leS
.Fusain , 27 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Faites une boucle sur tous les indices de la chaîne d'entrée.
Sauf pour le premier index, boucle sur un nombre aléatoire de 1 à 5 inclus ...
... extraire les caractères précédent et suivant de la chaîne, prendre les versions majuscules et minuscules et choisir un caractère aléatoire des quatre.
Imprime le caractère à l'index actuel.
la source
perl 5 (
-p
), 77 octetsTIO
la source
$&
au lieu de$1
, etchop
+-l
au lieu des/.$//
Japt
-P
, 14 octetsEssayez-le
la source
Python 3 , 167 octets
Essayez-le en ligne!
la source
Gelée , 14 octets
Essayez-le en ligne!
Explication
la source
C (GCC)
175162 octets-12 octets de LambdaBeta
Essayez-le en ligne
la source
0
de la première ligne.S
comme paramètre et en ajoutant vos variables à la liste des arguments: Essayez-le en ligne!0
, ce qui ne valait pas la peine d'en avoir#define
plusPowerShell ,
154105103 1039587 octets-67 octets grâce à mazzy qui ne peut pas être arrêté
Essayez-le en ligne!
Pas une méthode fantastique mais ça marche.Maintenant c'est plutôt bien. Prend entrée via splattingla source
Scala 2.12.8, 214 octets
Version golfée:
Golfé avec des nouvelles lignes et des retraits:
Non golfé:
la source
a :: b :: Nil
devenira::b::Nil
? Idem poura :+
,a:+()
oua.:+()
pourrait fonctionnera::b::Nil
provoque une erreur de compilation.+:
est une méthode définie dans la liste, donc elle pourrait économiser de l'espace en se débarrassant des parens externes?Perl 5
-n
, 61 octetsEssayez-le en ligne!
la source
C # (Visual C # Interactive Compiler) ,
236213209 octetsEssayez-le en ligne!
la source
char b=a[0]
->var b=a[0]
, espace supplémentaire dans la déclaration de lad
boucle forRequête T-SQL, 286 octets
Essayez-le en ligne, malheureusement, la version en ligne affiche toujours le même résultat pour le même varchar, contrairement à MS SQL Server Management Studio
la source
C # (Visual C # Interactive Compiler) , 156 octets
Essayez-le en ligne!
la source
Japt
-P
,4316 octetsRaccourci de beaucoup maintenant!
Essayez-le
la source
ä
la description de 's donne trois arguments, le dernier étantx+y
. Mais comme vous pouvez le voir ici , il retourne juste 1. Est-ce un bug?C (gcc) ,
110109 octetsEssayez-le en ligne!
-1 grâce au plafond
Le nombre de caractères imprimés (par caractère saisi) n'est pas uniformément aléatoire:
la source
Zsh,
113107 bytesAvec beaucoup d'aide de
man zshexpn
etman zshparam
. Essayez-le en ligne!la source