Entrada:
Uma linha
Resultado:
1) Primeiro, pegamos o caractere remove no final da string de entrada até ficarmos com um comprimento quadrado (ou seja, 1, 4, 9, 16, 25, 36 etc.).
Assim, o abcdefghijklmnopqrstuvwxyz
comprimento 26 se tornaabcdefghijklmnopqrstuvwxy
( comprimento 25).
2) Em seguida, colocamos isso em um quadrado, uma linha de cada vez, da esquerda para a direita:
abcde
fghij
klmno
pqrst
uvwxy
3) Dobramos em todas as quatro direções, assim (continuamos a desdobrar até que o 'bloco' dobrado externo não tenha mais caracteres internos a serem desdobramentos):
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Algumas coisas a serem observadas, quando dobramos para fora, basicamente refletimos assim (números adicionados como esclarecimento, que representam os 'índices' nesses exemplos):
Quando dobramos o lado esquerdo:
123 to: 321 123
fghij ihgf j
Quando dobramos o lado direito:
123 to: 123 321
fghij f jihg
Quando dobramos para cima:
3q
2l
1g
b to: b
1g 1
2l 2
3q 3
v v
Quando dobramos para baixo:
b b
1g 1
2l 2
3q 3
v to: v
3q
2l
1g
Regras do desafio:
- Você pode assumir que a entrada sempre terá pelo menos 1 caractere (que também será a saída).
- O formato de saída é flexível, para que você possa imprimir em STDOUT ou STDERR; retornar como string-array / list ou character 2D-array; cadeia única com novas linhas; etc.
- A entrada conterá apenas caracteres alfanuméricos (
a-zA-Z0-9
) - Você também pode usar um caractere não alfanumérico para preencher os espaços e / ou ao redor da saída da arte ASCII, como um ponto
.
. - Espaços à direita e uma única nova linha à direita são opcionais.
- Continuamos a desdobrar até que o 'bloco' dobrado externo não tenha mais centros para desdobrar.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados e programas completos do tipo retorno. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
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