Pierwsze litery, ruszaj się!był bardzo popularny, ale miał ograniczony udział. Ten będzie łatwiejszy do rozwiązania, ale mam nadzieję, że w grę w golfa wejdą pewne sztuczki.
Otrzymujesz ciąg tylko małych liter. Dla każdej litery, z pozycją w alfabecie m , przesuń ją, aby stała się m- tą literą od końca. Jeśli wartość m jest większa niż długość sznurka, przenieś ją na sam przód. Wyprowadza tylko w pełni przekształcony ciąg.
Przykłady:
"żyrafa"
- „g” jest siódmą literą alfabetu, jest już siódmą literą z tyłu, więc zostaw ją.
- „i” to dziewiąta litera, ponieważ 9 jest większa niż długość słowa, idzie na przód, więc ciąg staje się
igraffe
- „r” jest 18. literą, podobnie jak „i”:
rigaffe
- „a” to pierwsza litera, która dochodzi do samego końca:
rigffea
- „f” jest szóstą literą, staje się szóstą z tyłu:
rfigfea
- następne „f” jest także szóstą literą, więc z tyłu również przechodzi na szóstą literę:
rffigea
- „e” to piąte litery, a od piątej dochodzi do piątego:
rfefiga
"kwiat"
- „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
(upewnij się, że przesuwasz e , który nie został jeszcze przeniesiony! Tutaj to nie ma znaczenia, ale poniżej.)
Dzięki @Neil za ulepszenie przypadków testowych dzięki 3 dodatkom:
"Pizza"
- „p” (16) =>
pizza
- „i” (9) =>
ipzza
- „z” (26) =>
zipza
- „z” (26) =>
zzipa
(przenoszenie drugiego 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
"postacie"
- „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
źródło
źródło
Python 3, 78 bajtów.
Zaoszczędzono 2 bajty dzięki orlp.
Zaoszczędź 7 bajtów dzięki DSM.
Tworzy słowo jako listę, a następnie dołącza do niego.
źródło
(q-p,0)[p>q]
jest dłuższy niżmin(q-p,0)
.max(q-p,0)
.Python 2, 86 bajtów
Python 3, 88 bajtów
Przykłady
Python 2:
Python 3:
źródło
k.remove
usuwa pierwszą instancję, więc to się nie powiedziebaa
.JavaScript ES6,
136134131 bajtówNależy pamiętać, że należy bardzo uważać, aby nie poruszyć ten sam charakter dwukrotnie, inaczej
pizza
zamienia sięzipza
kiedy powinno byćzzipa
. Istnieje również przypadek skrajny dotyczący nieusuwania znaków przedwcześnie;characters
staje się możesrtrchaeac
lubsrtrheccaa
jeśli zrobisz to źle, ale tak powinno byćsrtrhcecaa
. Innym trudnym słowem jest niepoprawneabracadabra
wyjścierrabaaadcba
;rrbcdaaabaa
byłoby poprawne.Edycja: Ogolono dwa bajty za pomocą podłańcucha, który automatycznie zmusza argumenty do zakresu 0.. długości.
Edycja: Ogolono trzy bajty, zmieniając pierwszy podłańcuch na podrzędny, zgodnie z sugestią użytkownika 81665.
źródło
substr
zamiastsubstring
.slice
jest lepszy (myślę).slice
łamie to.pizza
przypadku testowym, który umieściłeś na moim poście, ale go naprawiłem.Pyth,
1817 bajtówPakiet testowy .
Iteruje przy użyciu redukcji nad łańcuchem wejściowym, wstawiając do łańcucha, pusty ciąg znaków skrzynki podstawowej, we właściwej pozycji.
źródło
𝔼𝕊𝕄𝕚𝕟, 23 znaki / 40 bajtów
Try it here (Firefox only).
Wyjaśnienie
źródło