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 g
y u
dos 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.
Respuestas:
Jalea , 26 bytes
TryItOnline!
¿Cómo?
fuente
Python 2,
10410298 BytesGracias por el comentario ayuda!
https://tio.run/#2VDVy
Original:
fuente
input()
y tomar entrada en el formato"<stuff>"
.lambda
para dar una función anónima en lugar de un programa; esto a menudo es más corto .+13
to+14
y el+1
to+(len(t)%14>0)
lo haría, pero debe haber un camino más corto.JavaScript (ES6), 79 bytes
Cadena hexadecimal robada descaradamente de @ETHproductions.
fuente
Retina , 71 bytes
Pruébalo en línea!
Permutar cuerdas no es exactamente conciso en Retina ...
fuente
JavaScript (ES7),
144143141114104103 bytes¡Gracias a ETHProductions por un ahorro de 10B!
Ejemplo
Salida
fuente
+('0x'+whatever)
para convertirla en un número:(_,c)=>b[(c/15|0)*14+ +('0x'+'0169abc7543268d'[c%15])]
'0x'+'...'[c%15]-0+(c/15|0)*14
ahorrarte un par de paréntesis :-)Perl 6 , 61 bytes
Cómo funciona
La estructura básica es esta:
La expresión utilizada para indexar en cada segmento de 14 caracteres es la
"abgjklmhfedcgin".ords X- 97
siguiente:abgjklmhfedcgin
.97 98 103 106 107 108 109 104 102 101 100 99 103 105 110
.0 1 6 9 10 11 12 7 5 4 3 2 6 8 13
.Perl 6 , 64 bytes
Pruébalo en línea!
Cómo funciona
La estructura básica es esta:
Mismos índices que el anterior, pero ya que estamos llamando
.flat
todos modos, podemos utilizar una expresión anidada (1 byte, pero más corto) para ellos:0,1,6,9..12,7,5...2,6,8,13
.(Parece trivial, pero en realidad se basa en una peculiaridad de análisis de Rakudo Perl 6 que probablemente sea un error . Para escribirlo sin explotar ese error, uno tendría que agregar parens alrededor del
5...2
.)fuente
Befunge-93, 97 bytes
Pruébalo en línea!
Este es un desglose del código fuente con las diversas partes componentes resaltadas.
c = c + 31*!(c+1)
. Aunque esto no se aplicará en la primera iteración, puede ocurrir en pases posteriores.abgjklm
) y 7 restantes en la pila (cdefhin
). Dejamos a los dos últimos, salida de los restantes 5 (hfedc
), y luego recuperar y salida de los casos especialesg
,i
yn
de la memoria.fuente
Mathematica,
7772 bytes¡Gracias a JungHwan Min por guardar 5 bytes!
Función sin nombre que toma una lista de caracteres como entrada y devuelve una lista de caracteres.
Partition[#,14,14,{1,1}," "]
divide la entrada en sublistas de longitud 14, rellenando con espacios si es necesario.LetterNumber@"abgjklmhfedcgin"
evalúa a{1,2,7,10,11,12,13,8,6,5,4,3,7,9,14}
, lo que indica el orden en el que se debe incluir cada sublista de longitud 14 (repitiendo el séptimo elemento adecuadamente). Luego[[;;,...]]
toma los elementos de todas las sublistas de longitud 14 en ese orden yJoin@@
une las respuestas.Presentación previa:
fuente
LetterNumber@"abgjklmhfedcgin"
Es una forma más corta de comprimir la lista. También en;;
lugar deAll
guardar un byte.Python 3 , 86 bytes
Pruébalo en línea!
Como
Tq>]zQ|1/X;:L$o
beneficio adicional, la cadena es un programa CJam válido que imprime los caracteres únicos en la entrada estándar, ordenados. Pruébalo en línea! (+ explicación)fuente
PHP, 94 bytes
divide el argumento de la línea de comandos en fragmentos de 14 bytes y recorre la cadena de traducción como índice para la subcadena. Corre con
php -nr '<code>' <string>
.Me alegró descubrir que
??
también acepta la cadena vacía (para un índice "no válido") como nula.fuente
Ruby, 83 bytes
La primera idea fue usar números hexadecimales, pero ord-48 guarda otro byte (robado de la respuesta de throx).
fuente