Zastąp ciąg samym sobą
Twoim celem jest zastąpienie łańcucha samym sobą poprzez zastąpienie każdego znaku w oryginalnym ciągu poprzednim, zaczynając od pierwszego znaku i zawijając go. Oto kilka przykładów, które pokazują, co mam na myśli:
Pierwszy przykład:
Input: program
Output: apgopra
How:
Program -> mrogram (replace p by m in program)
-> mpogpam (replace r by p in mrogram)
-> mprgpam (replace o by r in mpogpam)
-> mpropam (replace g by o in mprgpam)
-> mpgopam (replace r by g in mpropam)
-> mpgoprm (replace a by r in mpgopam)
-> apgopra (replace m by a in mpgoprm)
Drugi przykład:
Input: robot
Output: orbro
How:
Robot -> tobot (replace r by t in robot)
-> trbrt (replace o by r in tobot)
-> trort (replace b by o in trbrt)
-> trbrt (replace o by b in trort)
-> orbro (replace t by o in trbrt)
Trzeci przykład:
Input: x
Output: x
How:
x -> x (replace x by x in x)
Czwarty przykład:
Input: xy
Output: xx
How:
xy -> yy (replace x by y in xy)
-> xx (replace y by x in yy)
Sidenotes:
- Ciąg
x
będzie zawierał tylko małe litery i spacje alfanumeryczne - To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach !
Odpowiedzi:
CJam, 11 bajtów
Sprawdź to tutaj.
Wyjaśnienie
źródło
TeaScript , 17 bajtów
192124TeaScript to JavaScript do gry w golfa
Miło i krótko
Wypróbuj online (uważaj na końcowe białe znaki na wejściu)
Niegolfowane i objaśnienie
źródło
JavaScript ES6, 69 bajtów
Pokaż fragment kodu
źródło
F=
liczbę bajtów.s.slice(i-1)[0]
nie jest równys.slice(i-1,i)
?i=0
Rubin,
5048 bajtówTest:
źródło
Mathematica,
89757457 bajtówźródło
""<>Fold[#/.#2&,c=Characters@#,Thread[c->RotateRight@c]]&
Transpose
i nie udało się.Pyth, 13 bajtów
Wypróbuj online. Zestaw testowy.
źródło
k2 - 17 znaków
Funkcja przyjmująca 1 argument.
K2 wbudowany ekwiwalent zwaną
_ssr
dla S tring S earch i R EUmieãæ._ssr[x;y;z]
znajdziey
sięx
i wymienić jąz
. Używamy więc/
tej funkcji do złożenia każdego zamiennika, który chcemy wykonać. Dla tych, którzy nie są zaznajomieni ze składaniem (jak w programowaniu funkcjonalnym), w istocie_ssr/[x; (y1; y2; y3); (z1; z2; z3)]
staje się_ssr[_ssr[_ssr[x; y1; z1]; y2; z2]; y3; z3]
. Ciągi są listami ich znaków, więc możemy po prostu obrócić wejście z powrotem o krok, uzyskać zamienniki i podłączyć się od razu.źródło
Haskell, 76 bajtów
Szkoda, że Haskell nie ma nawet wbudowanej funkcji zastępowania.
źródło
PHP, 76 bajtów
Oto wersja bez golfa:
źródło
Python,
67646257 bajtówProste rozwiązanie, znajdzie coś, co może to skrócić. Dzięki @RandyC za oszczędność 5 bajtów.
Dane wejściowe powinny być w cudzysłowach.
źródło
[:-1]
ponieważ zip skraca się do najkrótszej iterowalnej.Haskell, 58 bajtów
Całkiem podobne do rozwiązania Christiana, ale używając
map
i fakt, żezip
ignoruje zbędne elementy, jeśli listy mają nierówną długość. Składa listę zamienników (w formularzu(from,to)
), aktualizując ciąg, mapując ręcznie napisaną funkcję zastępcząr
na każdą literę.Wyrażenie
flip$map.r
wyprowadzono za pomocą wtyczki „Pointless” LambdaBot.źródło