Wejście:
Sznurek
Wynik:
1) Najpierw bierzemy znak usuwania na końcu ciągu wejściowego, dopóki nie zostanie nam długość, która jest kwadratem (tj. 1, 4, 9, 16, 25, 36 itd.)
Tak więc abcdefghijklmnopqrstuvwxyz(długość 26) staje się abcdefghijklmnopqrstuvwxy( długość 25).
2) Następnie umieszczamy to w kwadracie, po jednej linii, od lewej do prawej:
abcde
fghij
klmno
pqrst
uvwxy
3) Składamy go we wszystkich czterech kierunkach, w ten sposób (rozkładamy, dopóki zewnętrzny złożony blok nie będzie miał żadnych wewnętrznych znaków do rozwinięcia):
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Należy zwrócić uwagę na kilka rzeczy: kiedy składamy na zewnątrz, w zasadzie odbijamy w ten sposób (liczby dodawane jako wyjaśnienie, które reprezentują „indeksy” w tych przykładach):
Kiedy rozkładamy lewą stronę:
123 to: 321 123
fghij ihgf j
Kiedy składamy prawą stronę:
123 to: 123 321
fghij f jihg
Kiedy składamy do góry:
3q
2l
1g
b to: b
1g 1
2l 2
3q 3
v v
Kiedy składamy w dół:
b b
1g 1
2l 2
3q 3
v to: v
3q
2l
1g
Zasady konkursu:
- Możesz założyć, że dane wejściowe zawsze będą miały co najmniej 1 znak (który będzie również danymi wyjściowymi).
- Format wyjściowy jest elastyczny, dzięki czemu można drukować do STDOUT lub STDERR; zwraca jako tablicę łańcuchową / listę lub tablicę znaków 2D; pojedynczy ciąg z nowymi wierszami; itp.
- Dane wejściowe będą zawierać tylko znaki alfanumeryczne (
a-zA-Z0-9) - Możesz również użyć znaku niealfanumerycznego, aby wypełnić spacje i / lub wokół wyjścia ASCII-art, jak kropka
.. - Końcowe spacje i pojedyncza nowa linia są opcjonalne.
- Kontynuujemy rozkładanie, dopóki zewnętrzny złożony blok nie będzie miał więcej centrów do rozwinięcia.
Główne zasady:
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
Nie pozwól, aby języki gry w golfa zniechęcały Cię do publikowania odpowiedzi w językach niekodujących golfa. Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.
Przypadki testowe:
Input: abcdefghijklmnopqrstuvwxy
Output:
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Input: A
Ouput:
A
Input: ThisIsATest
Output:
I
Thi
Is sI
ATe
I
Input: HowAboutAVeryLongExampleWhichIsAlsoAnEvenSquareInsteadOfOddOneAndExceeds64Chars
Output:
An
ch
xamp
i I
o E
quar
steadO
S e
s v
h s
E l
VeryLo
HowAbout
oLyreVA noLyreV
xampl Eg el Examp
hci Is hW As hi Ihc
nAo Ev sl ev so EnA
quare Sn Ie Squar
Odaetsn fOdaets
OddOneAn
steadO
S e
s v
h s
E l
VeryLo
xamp
i I
o E
quar
An
ch
Input: Lenght7
Output:
Le
ng
Input: abc
Output:
a