Sandbox publica aquí .
Cree una función o programa que "Springify" una cadena.
- La entrada será una cadena en Stdin, o la alternativa más cercana
- La entrada solo contendrá ASCII y / o espacios imprimibles
- La salida será a Stdout, o la alternativa más cercana
- Las líneas y espacios finales son aceptables
Cómo hacer saltar una cuerda
- Formatee la cadena en tantas bobinas de resorte ASCII como sea necesario
- Rellene las bobinas con espacios, hasta la bobina más cercana
- Lea los personajes, siguiendo la primavera alrededor de las bobinas.
Esta es una bobina de resorte ASCII:
#
# ####
# #
# ####
#
Donde los #s son los personajes de la cadena
Aquí hay un ejemplo:
abcdefghijklmnopqrstuvwxyz
se convierte
a
b cdef
g h
i jklm
n
o
p qrst
u v
w xyz.
.
Donde los .s reemplazan espacios para visibilidad.
Luego, la cadena se vuelve a leer, siguiendo el resorte ASCII hacia abajo, alrededor de los bucles, presionando gy udos veces:
1| a <-3
V b cdef
g h
4| i jklm
V n 2->
...
... dando:
abgjklmhfedcginopuxyz vtsrquw (con un espacio final)
Casos de prueba
(citas agregadas para resaltar los espacios finales - ignore en términos de IO)
I: "abcdefghijklmnopqrstuvwxyz"
O: "abgjklmhfedcginopuxyz vtsrquw "
I: "!@#"
O: "!@ # "
I: ""
O: ""
I: "12345 67890"
O: "12690 7 54368 "
I: " "
O: " "
Tenga en cuenta que la longitud de salida es siempre un múltiplo de 15, la longitud de una bobina de resorte
Este es el código de golf , por lo que gana la respuesta más corta en bytes.

El bucle principal comienza a ejecutarse de derecha a izquierda, envolviendo el lado derecho del campo de juego. Aquí es donde leemos el primer carácter de stdin y terminamos si es un EOF.
La siguiente sección se asegura de que los caracteres EOF se conviertan en espacios utilizando la fórmula
Se guarda una copia del carácter en la memoria temporal, y luego se realiza una búsqueda del índice actual en la tabla en la línea cuatro (
) para determinar si el carácter se debe generar o no.
Si el carácter necesita ser sacado, tomamos la rama izquierda. Aquí se realiza un intercambio para cancelar el intercambio que ocurrirá a continuación, y luego se empuja un cero para forzar la rama hacia la derecha.
Si el personaje no salió, lo cambiamos por la pila debajo del contador de índice (este es el intercambio que se cancela en la rama izquierda). Y en ambos casos guardamos el carácter en la memoria en el desplazamiento del índice actual, incrementamos el índice y verificamos si es mayor que 13.
Si no, leemos el siguiente carácter de stdin y repetimos el ciclo interno.
Si es así, habremos terminado un conjunto de 14 caracteres, 7 de los cuales salieron (