Entrada:
Una cuerda
Salida:
1) Primero tomamos eliminar el carácter al final de la cadena de entrada hasta que nos queda una longitud que es un cuadrado (es decir, 1, 4, 9, 16, 25, 36, etc.)
Entonces abcdefghijklmnopqrstuvwxyz
(longitud 26) se convierte en abcdefghijklmnopqrstuvwxy
( longitud 25).
2) Luego colocamos esto en un cuadrado, una línea a la vez, de izquierda a derecha:
abcde
fghij
klmno
pqrst
uvwxy
3) Lo doblamos en las cuatro direcciones, de esta manera (seguimos desplegando hasta que el 'bloque' plegado exterior ya no tiene caracteres internos para desplegar):
m
qrs
l n
ghi
abcde
ihgf jihg
mn lk on lm
srqp tsrq
uvwxy
qrs
l n
ghi
m
Algunas cosas a tener en cuenta, cuando nos plegamos hacia afuera, básicamente reflejamos así (números agregados como aclaración, que representa los 'índices' en estos ejemplos):
Cuando doblamos el lado izquierdo:
123 to: 321 123
fghij ihgf j
Cuando doblamos el lado derecho:
123 to: 123 321
fghij f jihg
Cuando nos plegamos hacia arriba:
3q
2l
1g
b to: b
1g 1
2l 2
3q 3
v v
Cuando nos plegamos hacia abajo:
b b
1g 1
2l 2
3q 3
v to: v
3q
2l
1g
Reglas de desafío:
- Puede suponer que la entrada siempre tendrá al menos 1 carácter (que también será la salida).
- El formato de salida es flexible, por lo que puede imprimir en STDOUT o STDERR; regresar como string-array / list o character 2D-array; cadena simple con líneas nuevas; etc.
- La entrada solo contendrá caracteres alfanuméricos (
a-zA-Z0-9
) - También puede usar un carácter no alfanumérico para llenar los espacios en y / o alrededor de la salida de arte ASCII, como un punto
.
. - Los espacios finales y una nueva línea final son opcionales.
- Continuamos desplegándonos hasta que el 'bloque' plegado exterior no tenga más centros para desplegar.
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de código de golf lo desalienten de publicar respuestas con idiomas que no sean de código. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede utilizar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.
Casos de prueba:
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