Wyzwanie polega na tym, aby pobrać ciąg i wyprowadzić wszystkie jego obroty, wielokrotnie przesuwając pierwszy znak na koniec, raz na znak w ciągu, kończąc na oryginalnym ciągu:
john -> ohnj, hnjo, njoh, john
Możesz także jechać w innym kierunku, przesuwając postacie od końca:
john -> njoh, hnjo, ohnj, john
Nadal powinieneś generować jeden obrót na literę, nawet jeśli wcześniej osiągnięte zostało oryginalne słowo:
heehee -> eeheeh, eheehe, heehee, eeheeh, eheehe, heehee
Tablice znaków są dozwolone, o ile wynik działa, jak pokazano powyżej.
Najkrótsza odpowiedź wygrywa!
heehee
powraca do pierwotnego zamówienia w mniejszej liczbie cykli niż jego długość, czy na tym poprzestajemy? Spodziewam się, że to wiele zmieni w przypadku wielu odpowiedzi.Odpowiedzi:
Galaretka , 2 bajty
Monadyczny link akceptujący listę znaków, który daje listę list znaków
Wypróbuj online! (stopka ładnie drukuje, wywołując link i łącząc się ze znakami nowej linii)
źródło
Haskell, 27 bajtów
Wypróbuj online!
źródło
APL (Dyalog Unicode) , 6 bajtów SBCS
Wypróbuj online!
⍳
wskaźniki∘
z≢
podsumowanie⌽¨
każdy obrót (w lewo)⊂
cały ciągźródło
Python 2 , 38 bajtów
Wypróbuj online!
źródło
JavaScript (ES6),
3732 bajtówZwraca tablicę ciągów.
Wypróbuj online!
źródło
Japt,
53 bajtyPobiera dane wejściowe jako tablicę znaków, generuje tablicę tablic znaków
Wypróbuj tutaj
źródło
05AB1E , 3 bajty
Wypróbuj online!
źródło
pieprzenie mózgu , 59 bajtów
Wypróbuj online!
Zwraca każdy ciąg oddzielony pustymi bajtami.
Wyjaśnienie:
źródło
MATL ,
65 bajtów1 bajt zapisany dzięki @luis!
Wypróbuj w MATL Online !
Objaśnienie :
źródło
Wolfram Language (Mathematica) ,
3526 bajtówWypróbuj online!
Pobiera na wejściu listę znaków.
Partition
(ale nie jego wariantStringPartition
użyty poniżej) ma opcjonalny czwarty argument do traktowania danych wejściowych jako cyklicznych (i do określania, jak dokładnie to zrobić), co sprawia, że to rozwiązanie jest prostsze niż łańcuchowe - oprócz tego, że nie ma zbudowanej 15 znaków -w funkcjach.Wolfram Language (Mathematica) , 44 bajty
Wypróbuj online!
To samo, ale pobiera ciąg jako dane wejściowe.
Zamienia się
"john"
w"johnjohn"
, następnie bierze wszystkieStringLength["john"]
podłańcuchy długości tego łańcucha z przesunięciem 1, tworząc{"john","ohnj","hnjo","njoh","john"}
, a następnie upuszcza pierwszy z nichRest
.źródło
Rest@Partition[#~Join~#,Length@#,1]&
miałoby 36 bajtów.Attache , 13 bajtów
Wypróbuj online!
Wyjaśnienie
Alternatywy
15 bajtów :
{_&Rotate!1:#_}
16 bajtów :
{Rotate[_,1:#_]}
16 bajtów :
Rotate@Rotations
16 bajtów :
Rotate#(1&`:@`#)
17 bajtów :
Rotate#{1+Iota@_}
18 bajtów :
Rotate#(1&`+@Iota)
19 bajtów :
Rotate#(Succ=>Iota)
źródło
J , 7 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
"
jest bardzo sprytne i wymaga znajomości języka w słowniku. Czy istnieje także czasownik z rangą1 0
?"#:
. Nauczyłem się tego tutaj od FrownyfrogR , 58 bajtów
Wypróbuj online!
źródło
C # (interaktywny kompilator Visual C #) , 34 bajty
Wypróbuj online!
źródło
C (32-bit),
585150 bajtów-1 bajt dla ładnej okrągłej liczby dzięki pułapce cat
Wypróbuj online!
Degolf
źródło
~++i+printf("%s%.*s\n",s+i,i,s)
zamiasti++<printf("%s%.*s\n",s+i,i,s)-2
flooringcat
.Węgiel drzewny , 10 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Obracają się w kierunku przeciwnym, zastępuje
Minus
sięPlus
.źródło
Czerwony ,
4943 bajtówWypróbuj online!
źródło
Python 2 ,
5448 bajtówWypróbuj online!
Dobrze pokonany przez xnor, ale i tak opublikowany jako alternatywne podejście.
źródło
Perl 6 , 32 bajty
Wypróbuj online!
m:ex/^(.*)(.+)$/
ex
silniem
wciska podany regex, dzieląc łańcuch wejściowy w każdym możliwym miejscu, z tym wyjątkiem, że drugi podłańcuch musi mieć co najmniej jeden znak - co zapobiega dwukrotnemu wyświetlaniu łańcucha wejściowego na wyjściu. Następnie każda zMatch
grup przechwytywania wynikowych obiektów jest redukowana ([]
) do pojedynczego łańcucha zaR~
pomocą operatora odwrotnej konkatenacji łańcucha.źródło
Pushy , 4 bajty
Wypróbuj online!
źródło
V , 8 bajtów
Wypróbuj online!
Hexdump:
źródło
ýñx$pÙñd
daje 8, usuwając potrzebęH
tio.run/##K/v///DewxsrVAoOzzy8MeX/f6/8jDwAý<M-->ñx$pÙ
PowerShell, 44 bajty
Skrypt testowy:
wydajność:
źródło
Tcl , 80
91bajtówWypróbuj online!
źródło
proc R t {time {puts [set t [string ra $t 1 end][string in $t 0]]} [string len $t]}
SNOBOL4 (CSNOBOL4) , 82 bajty
Wypróbuj online!
źródło
Lua , 61 bajtów
Wypróbuj online!
Podziel ciąg przy kolejnych indeksach od jednego do długości łańcucha (indeksowanie na podstawie jednego), połącz elementy w odwrotnej kolejności, wydrukuj.
źródło
Rubin , 39 bajtów
Wypróbuj online!
źródło
JavaScript,
484336 bajtów-5 bajtów dzięki uprzejmości @Bubbler * -7 bajtów dzięki uprzejmości @Shaggy
Dane wejściowe to tablica znaków, a dane wyjściowe to tablica znaków.
Wypróbuj online!
źródło
[..."john"]
liczy się jako manipulowanie łańcuchem wejściowym w tablicy przed wywołaniem funkcji?Common Lisp, 88 bajtów
Wypróbuj online!
źródło
MBASIC ,
6966 bajtów-3 bajty, dzięki Ørjan Johansen
źródło
1 INPUT S$:L=LEN(S$):FOR I=1 TO L:S$=MID$(S$+S$,2,L):PRINT S$:NEXT
.pieprzenie mózgu , 38 bajtów
Wypróbuj online!
Oparty na pomyśle JoKinga, aby używać znaków null jako symboli spacji. Ten kod oznacza bieżące litery do wydrukowania i zapętla się, aż dojdzie do lewego końca.
źródło