Die ersten Briefe - In Bewegung! war sehr beliebt, hatte aber begrenzte Teilnahme. Dieser wird einfacher zu lösen sein, aber hoffentlich einige Tricks beim Golfen beinhalten.
Sie erhalten eine Zeichenfolge, die nur Kleinbuchstaben enthält. Verschieben Sie jeden Buchstaben mit der Position im Alphabet m so , dass er zum m- ten Buchstaben am Ende wird. Wenn der Wert von m länger als die Länge der Zeichenfolge ist, verschieben Sie ihn ganz nach vorne. Geben Sie nur den vollständig transformierten String aus.
Beispiele:
"Giraffe"
- 'g' ist der 7. Buchstabe im Alphabet, es ist bereits der 7. Buchstabe von hinten, also lass es.
- 'i' ist der 9. Buchstabe, da 9 größer als die Länge des Wortes ist, geht es nach vorne, so dass die Zeichenfolge wird
igraffe
- 'r' ist der 18. Buchstabe, so wie 'i' nach vorne geht:
rigaffe
- 'a' ist der erste Buchstabe, er geht bis zum Ende:
rigffea
- 'f' ist der 6. Buchstabe, es wird der 6. von hinten:
rfigfea
- Das nächste 'f' ist auch der sechste Buchstabe, also geht es auch von hinten auf den sechsten:
rffigea
- 'e' ist der fünfte Buchstabe, von hinten geht es zum fünften:
rfefiga
"Blume"
- '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
(Stellen Sie sicher, dass Sie das e verschieben , das noch nicht verschoben wurde. Hier spielt es keine Rolle, aber darunter.)
Vielen Dank an @Neil für die Verbesserung der Testfälle mit diesen 3 Ergänzungen:
"Pizza"
- 'p' (16) =>
pizza
- 'i' (9) =>
ipzza
- 'z' (26) =>
zipza
- 'z' (26) =>
zzipa
(Verschieben des zweiten z!) - 'a' (1) =>
zzipa
"Abrakadabra"
- '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
"Zeichen"
- '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
quelle
quelle
Python 3, 78 Bytes.
2 Bytes dank orlp eingespart.
7 Bytes gespart dank DSM.
Erstellt das Wort als Liste und fügt es dann hinzu.
quelle
(q-p,0)[p>q]
ist länger alsmin(q-p,0)
.max(q-p,0)
.Python 2, 86 Bytes
Python 3, 88 Bytes
Beispiele
Python 2:
Python 3:
quelle
k.remove
Entfernt die erste Instanz, so dass dies für etwas wie fehlschlagen wirdbaa
.Javascript ES6,
136134131 BytesBeachte, dass ich sehr darauf achte, nicht den gleichen Charakter zweimal zu bewegen, sonst
pizza
verwandeltzipza
es sich in, wann es sein solltezzipa
. Es gibt auch einen Randfall, in dem es darum geht, Zeichen nicht vorzeitig zu entfernen.characters
wird vielleichtsrtrchaeac
odersrtrheccaa
wenn du es falsch machst sollte es aber seinsrtrhcecaa
. Ein anderes kniffliges Wort istabracadabra
, für die der Ausgangrrabaaadcba
falsch sein würde;rrbcdaaabaa
wäre richtig.Bearbeiten: Zwei Bytes mit einem Teilstring abgeschnitten, der seine Argumente automatisch auf den Bereich 0..Länge zwingt.
Bearbeiten: Drei Bytes wurden abgeschnitten, indem der erste Teilstring wie von user81665 vorgeschlagen in substr geändert wurde.
quelle
substr
anstelle von verwendensubstring
.slice
ist besser (denke ich).slice
Umbrüche übergibt .pizza
Testfall, den Sie auf meinen Post gesetzt haben, aber ich habe ihn behoben.Pyth,
1817 BytesTest Suite .
Iteriert mit Hilfe von "Reduzieren" über die Eingabezeichenfolge und fügt an der richtigen Position eine leere Zeichenfolge in eine Zeichenfolge ein.
quelle
𝔼𝕊𝕄𝕚𝕟 23 Zeichen / 40 Byte
Try it here (Firefox only).
Erläuterung
quelle