Esta pregunta está inspirada en la pregunta de Kevin Cruijssen .
Ahora que la alfombra está tendida, queremos enrollarla. Su tarea es escribir un programa que tome una cadena y devuelva una espiral hecha de esta cadena (que representa una alfombra enrollada vista desde el lado).
El procedimiento para un paso de rodar la alfombra es el siguiente. Hay un ejemplo para ilustrar lo que quiero decir. Observe que el ejemplo comienza con una alfombra parcialmente enrollada para una mejor comprensión:
ac
rpet
- separe la "cabeza" de la "cola" de la alfombra: la cabeza es lo que se ha enrollado hasta ahora, la cola es lo que queda por enrollar.
Head: ac Tail:
rp et
- Gire la cabeza 90 °, en sentido horario.
Rotated head: ra Tail (unchanged):
pc et
- si el ancho de la nueva cabeza (aquí
2) es menor o igual que la longitud de la cola (aquí2)- luego, póngalo encima de la cola
- de lo contrario, la alfombra (como estaba al comienzo del paso) estaba enrollada
New carpet: ra
pc
et
Repita el procedimiento tantas veces como sea necesario.
Dos ejemplos que muestran todos los pasos de la alfombra rodando:
carpet
c
arpet
ac
rpet
ra
pc
et
0123456789
0
123456789
10
23456789
21
30
456789
432
501
6789
Algunas precisiones:
- No necesita mostrar todos los pasos intermedios, solo la alfombra enrollada (por ejemplo, si encuentra una manera no iterativa de calcular el resultado, es perfecto). Además, no necesita imprimir ningún espacio en blanco inicial, en los ejemplos anteriores, solo les muestro para alinear cosas.
- La entrada es una cadena, una lista / matriz de caracteres
- La salida se imprime en stdout o en un archivo.
- La entrada es buena: la longitud es de al menos 1 carácter, y como máximo una constante lo suficientemente pequeña como para que no cause problemas, pero no puede usar esa constante en su programa; el contenido de la cadena son solo caracteres agradables ([a-zA-Z0-9]), que codifica según su preferencia.
- Este es el código de golf , por lo que la respuesta más corta en bytes gana. No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación.
- 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 para su respuesta si cree que es necesaria.
ProgrammingPuzzlesAndCodeGolf- la longitud final de la cola mayor que 1 me hizo tropezar.
printdentro de a lambda.