Ingresso:
Una stringa
Produzione:
1) Per prima cosa prendiamo il carattere di rimozione alla fine della stringa di input fino a quando non ci rimane una lunghezza che è un quadrato (cioè 1, 4, 9, 16, 25, 36, ecc.)
Quindi abcdefghijklmnopqrstuvwxyz(lunghezza 26) diventa abcdefghijklmnopqrstuvwxy( lunghezza 25).
2) Quindi inseriamo questo in un quadrato, una riga alla volta, da sinistra a destra:
abcde
fghij
klmno
pqrst
uvwxy
3) Lo pieghiamo in tutte e quattro le direzioni, in questo modo (continuiamo a spiegarci fino a quando il 'blocco' esterno piegato non ha più caratteri interni da dispiegare):
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Alcune cose da notare, quando pieghiamo verso l'esterno, fondamentalmente rispecchiamo in questo modo (numeri aggiunti come chiarimento, che rappresenta gli "indici" in questi esempi):
Quando apriamo il lato sinistro:
123 to: 321 123
fghij ihgf j
Quando pieghiamo il lato destro:
123 to: 123 321
fghij f jihg
Quando pieghiamo verso l'alto:
3q
2l
1g
b to: b
1g 1
2l 2
3q 3
v v
Quando pieghiamo verso il basso:
b b
1g 1
2l 2
3q 3
v to: v
3q
2l
1g
Regole della sfida:
- Puoi presumere che l'input avrà sempre almeno 1 carattere (che sarà anche l'output).
- Il formato di output è flessibile, quindi è possibile stampare su STDOUT o STDERR; ritorna come array stringa / elenco o carattere array 2D; stringa singola con new-line; eccetera.
- L'input conterrà solo caratteri alfanumerici (
a-zA-Z0-9) - Puoi anche usare un carattere non alfanumerico per riempire gli spazi all'interno e / o attorno all'output di arte ASCII, come un punto
.. - Gli spazi finali e una singola nuova riga finale sono facoltativi.
- Continuiamo a svolgerci fino a quando il "blocco" esterno piegato non ha più centri da dispiegare.
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Le scappatoie predefinite sono vietate.
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si prega di aggiungere una spiegazione, se necessario.
Casi test:
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