Le défi ici est de prendre une chaîne et de produire toutes ses rotations, en déplaçant à plusieurs reprises le premier caractère jusqu'à la fin, une fois par caractère dans la chaîne, en terminant par la chaîne d'origine:
john -> ohnj, hnjo, njoh, john
Vous pouvez également faire un cycle dans l'autre sens, en déplaçant les personnages de la fin:
john -> njoh, hnjo, ohnj, john
Vous devez toujours générer une rotation par lettre même si le mot d'origine est atteint avant cela:
heehee -> eeheeh, eheehe, heehee, eeheeh, eheehe, heehee
Les tableaux de caractères sont autorisés, tant que le résultat fonctionne comme indiqué ci-dessus.
La réponse la plus courte gagne!
heehee
retourne à l'ordre d'origine en moins de cycles que sa longueur, on s'arrête là? J'espère que cela ferait une grande différence pour de nombreuses réponses.Réponses:
Gelée , 2 octets
Un lien monadique acceptant une liste de caractères qui donne une liste de listes de caractères
Essayez-le en ligne! (joli pied de page s'imprime en appelant le lien et en se joignant à des caractères de nouvelle ligne)
la source
Haskell, 27 octets
Essayez-le en ligne!
la source
APL (Dyalog Unicode) , 6 octets SBCS
Essayez-le en ligne!
⍳
les indices∘
de≢
le décompte⌽¨
chacun tourne (vers la gauche)⊂
la chaîne entièrela source
Python 2 , 38 octets
Essayez-le en ligne!
la source
JavaScript (ES6),
3732 octetsRenvoie un tableau de chaînes.
Essayez-le en ligne!
la source
Japt,
53 octetsPrend l'entrée comme un tableau de caractères, génère un tableau de tableaux de caractères
Essayez-le ici
la source
05AB1E , 3 octets
Essayez-le en ligne!
la source
brainfuck , 59 octets
Essayez-le en ligne!
Génère chaque chaîne séparée par des octets nuls.
Explication:
la source
MATL ,
65 octets1 octet enregistré grâce à @luis!
Essayez-le sur MATL Online !
Explication :
la source
Wolfram Language (Mathematica) ,
3526 octetsEssayez-le en ligne!
Prend une liste de caractères en entrée.
Partition
(mais pas sa varianteStringPartition
utilisée ci-dessous) a un quatrième argument optionnel pour traiter son entrée comme cyclique (et pour spécifier comment le faire exactement), ce qui rend cette solution plus simple que la chaîne - en plus de ne pas avoir de 15 caractères construits -dans les fonctions.Wolfram Language (Mathematica) , 44 octets
Essayez-le en ligne!
La même chose, mais prend une chaîne en entrée.
Se transforme
"john"
en"johnjohn"
, puis prend toutes lesStringLength["john"]
sous-chaînes de longueur de cette chaîne avec le décalage 1, produisant{"john","ohnj","hnjo","njoh","john"}
, puis supprime la première d'entre elles avecRest
.la source
Rest@Partition[#~Join~#,Length@#,1]&
serait de 36 octets.Attaché , 13 octets
Essayez-le en ligne!
Explication
Alternatives
15 octets :
{_&Rotate!1:#_}
16 octets :
{Rotate[_,1:#_]}
16 octets :
Rotate@Rotations
16 octets :
Rotate#(1&`:@`#)
17 octets :
Rotate#{1+Iota@_}
18 octets :
Rotate#(1&`+@Iota)
19 octets :
Rotate#(Succ=>Iota)
la source
J , 7 octets
Essayez-le en ligne!
Explication:
la source
"
comme ça est très intelligent et nécessite une connaissance de la langue par un dictionnaire. Y a-t-il aussi un verbe avec rang1 0
?"#:
. J'ai appris cela ici de FrownyfrogR , 58 octets
Essayez-le en ligne!
la source
C # (Visual C # Interactive Compiler) , 34 octets
Essayez-le en ligne!
la source
C (32 bits),
585150 octets-1 octet pour un joli chiffre rond grâce au plafond
Essayez-le en ligne!
Degolf
la source
~++i+printf("%s%.*s\n",s+i,i,s)
place dei++<printf("%s%.*s\n",s+i,i,s)-2
flooringcat
.charbon , 10 octets
Essayez-le en ligne!Le lien est vers la version détaillée du code. Explication:
Pour tourner dans le sens opposé, remplacez
Minus
parPlus
.la source
Rouge ,
4943 octetsEssayez-le en ligne!
la source
Python 2 ,
5448 octetsEssayez-le en ligne!
Bien battu par xnor mais affiché comme une approche alternative de toute façon.
la source
Perl 6 , 32 octets
Essayez-le en ligne!
m:ex/^(.*)(.+)$/
ex
exhaustivementm
atches l'expression rationnelle donnée, le partage de la chaîne d'entrée à tous les endroits possibles, sauf que la deuxième sous - chaîne doit avoir au moins un caractère - qui empêche la chaîne d'entrée d'apparaître deux fois dans la sortie. Ensuite, chacun desMatch
groupes de capture des objets résultants est réduit ([]
) en une seule chaîne avecR~
, l'opérateur de concaténation de chaîne inversée.la source
Pushy , 4 octets
Essayez-le en ligne!
la source
V , 8 octets
Essayez-le en ligne!
Hexdump:
la source
ýñx$pÙñd
donne 8 en supprimant la nécessité deH
tio.run/##K/v///DewxsrVAoOzzy8MeX/f6/8jDwAý<M-->ñx$pÙ
Powershell, 44 octets
Script de test:
sortie:
la source
Tcl , 80
91octetsEssayez-le en ligne!
la source
proc R t {time {puts [set t [string ra $t 1 end][string in $t 0]]} [string len $t]}
SNOBOL4 (CSNOBOL4) , 82 octets
Essayez-le en ligne!
la source
Lua , 61 octets
Essayez-le en ligne!
Fractionner la chaîne à des indices successifs de un à la longueur de la chaîne (indexation sur une base), concaténer les morceaux dans l'ordre inverse, imprimer.
la source
Rubis , 39 octets
Essayez-le en ligne!
la source
JavaScript,
484336 octets-5 octets gracieuseté de @Bubbler * -7 octets avec l'aimable autorisation de @Shaggy
L'entrée est un tableau de caractères et la sortie est un tableau de tableaux de caractères.
Essayez-le en ligne!
la source
[..."john"]
compte pas comme une manipulation de la chaîne d'entrée dans un tableau avant l'appel de la fonction?Lisp commun, 88 octets
Essayez-le en ligne!
la source
MBASIC ,
6966 octets-3 octets, grâce à Ørjan Johansen
la source
1 INPUT S$:L=LEN(S$):FOR I=1 TO L:S$=MID$(S$+S$,2,L):PRINT S$:NEXT
.brainfuck , 38 octets
Essayez-le en ligne!
Basé sur l'idée de JoKing d'utiliser des caractères nuls comme symboles d'espace. Ce code marque les lettres actuelles à imprimer et boucle jusqu'à ce qu'il atteigne l'extrémité gauche.
la source