Les premières lettres, bougez! était très populaire, mais avait une participation limitée. Celui-ci sera plus facile à résoudre, mais nous espérons qu'il impliquera quelques astuces dans le golf.
Vous obtenez une chaîne de lettres minuscules uniquement. Pour chaque lettre, avec la position dans l'alphabet m , déplacez - le afin de la m e lettre de la fin. Si la valeur de m est plus longue que la longueur de la chaîne, déplacez-la vers l'avant. N'affiche que la chaîne entièrement transformée.
Exemples:
"girafe"
- 'g' est la 7e lettre de l'alphabet, c'est déjà la 7e lettre de l'arrière, alors laissez-la.
- 'i' est la 9e lettre, puisque 9 est plus grand que la longueur du mot, il va à l'avant, donc la chaîne devient
igraffe
- 'r' est la 18e lettre, comme 'i' elle va au devant:
rigaffe
- 'a' est la 1ère lettre, elle va jusqu'au bout:
rigffea
- 'f' est la 6ème lettre, elle devient la 6ème à l'arrière:
rfigfea
- le "f" suivant est également la 6ème lettre, il va donc aussi à la 6ème à l'arrière:
rffigea
- 'e' est la 5e lettre, elle va à la 5e de l'arrière:
rfefiga
"fleur"
- «f» (6) =>
flower
- 'l' (12) =>
lfower
- «o» (15) =>
olfwer
- 'w' (23) =>
wolfer
- «e» (5) =>
weolfr
- 'r' (18) =>
rweolf
"ananas"
- 'p' (16) =>
pineapple
- «i» (9) =>
ipneapple
- 'n' (14) =>
nipeapple
- «e» (5) =>
nipaepple
- 'a' (1) =>
nipepplea
- 'p' (16) =>
pnipeplea
- 'p' (16) =>
ppnipelea
- 'l' (12) =>
lppnipeea
- 'e' (5) =>
lppneipea
(assurez-vous de déplacer le e qui n'a pas déjà été déplacé! Ici, cela n'a pas d'importance, mais en dessous.)
Merci à @Neil d'avoir amélioré les cas de test avec ces 3 ajouts:
"Pizza"
- 'p' (16) =>
pizza
- «i» (9) =>
ipzza
- 'z' (26) =>
zipza
- 'z' (26) =>
zzipa
(déplacer le deuxième z!) - 'a' (1) =>
zzipa
"abracadabra"
- 'a' (1) =>
bracadabraa
- 'b' (2) =>
racadabraba
- 'r' (18) =>
racadabraba
- 'a' (1) =>
rcadabrabaa
- «c» (3) =>
radabrabcaa
- 'a' (1) =>
rdabrabcaaa
- «d» (4) =>
rabrabcdaaa
- 'a' (1) =>
rbrabcdaaaa
- 'b' (2) =>
rrabcdaaaba
- 'r' (18) =>
rrabcdaaaba
- 'a' (1) =>
rrbcdaaabaa
"personnages"
- «c» (3) =>
haractecrs
- «h» (8) =>
arhactecrs
- 'a' (1) =>
rhactecrsa
- 'r' (18) =>
rhactecrsa
- 'a' (1) =>
rhctecrsaa
- «c» (3) =>
rhtecrscaa
- 't' (20) =>
trhecrscaa
- «e» (5) =>
trhcrescaa
- 'r' (18) =>
rtrhcescaa
- 's' (19) =>
srtrhcecaa
code-golf
string
permutations
geokavel
la source
la source
Python 3, 78 octets.
Enregistré 2 octets grâce à orlp.
7 octets enregistrés grâce à DSM.
Construit le mot sous forme de liste, puis le joint.
la source
(q-p,0)[p>q]
est plus long quemin(q-p,0)
.max(q-p,0)
.Python 2, 86 octets
Python 3, 88 octets
Exemples
Python 2:
Python 3:
la source
k.remove
supprime la première instance, donc cela va échouer pour quelque chose commebaa
.Javascript ES6,
136134131 131 octetsNotez que je prends grand soin de ne pas déplacer deux fois le même personnage, sinon il
pizza
se transforme enzipza
ce qu'il devrait êtrezzipa
. Il y a aussi un cas de bord traitant de ne pas supprimer les caractères prématurément;characters
devient peutsrtrchaeac
- être ousrtrheccaa
si vous le faites mal, mais ça devrait l'êtresrtrhcecaa
. Un autre mot délicat estabracadabra
pour lequel la sortierrabaaadcba
serait incorrecte;rrbcdaaabaa
serait correct.Edit: rasé de deux octets en utilisant une sous-chaîne qui contraint automatiquement ses arguments à la plage 0..length.
Edit: rasé de trois octets en changeant la première sous-chaîne en substr comme suggéré par user81665.
la source
substr
place desubstring
.slice
c'est mieux (je pense).slice
brise.pizza
cas de test que vous avez mis sur mon post, mais je l'ai corrigé.Pyth,
1817 octetsSuite de tests .
Itère en utilisant réduire sur la chaîne d'entrée, en insérant dans une chaîne, chaîne vide de cas de base, à la position correcte.
la source
𝔼𝕊𝕄𝕚𝕟, 23 caractères / 40 octets
Try it here (Firefox only).
Explication
la source