Su trabajo es bastante simple, escriba un programa que imprima Hello, world!
, que cuando se tuerce crea un programa que imprime Twister!
.
Cómo se tuercen las cuerdas
El algoritmo de torsión es muy simple. Cada columna se desplaza hacia abajo por su índice (col 0 se mueve hacia abajo 0, col 1 se mueve 1, ...). El cambio de columna se ajusta a la parte superior. Se parece a esto:
a
ba
cba
----
cba
cb
c
Con todo debajo de la línea envolviendo a la cima. Ejemplo real:
Original:
\\\\\\\\\\\\
............
............
............
Twisted:
\...\...\...
.\...\...\..
..\...\...\.
...\...\...\
(Más ejemplos y un trabalenguas en tu idioma favorito están aquí )
Tanteo
Su programa debe ser un rectángulo acolchado. Este es el código de golf, ¡así que el conteo de bytes más bajo gana!
Reglas
- Su primer programa debe imprimir
Hello, world!
. Solo se permite una nueva línea final. - Su primer y segundo programa deben estar en el mismo idioma.
- Su segundo programa debe imprimir
Twister!
. Solo se permite una nueva línea final. - Su programa debe tener al menos 2 filas y 2 columnas.
½
y toma la raíz cuadrada de un número. ¿Cuál de los dos debería considerarse la nueva línea para este desafío?Respuestas:
Jalea ,
333129 bytesOriginal
Pruébalo en línea.
Retorcido
Pruébalo en línea!
Cómo funciona
En cada programa, cada línea define un enlace. El último es el enlace principal, y se ejecuta cuando se inicia el programa. Como no hay referencias al primer enlace, simplemente se ignora.
Para ambos programas, se
“ɗ⁻%OḶ$“¡¦ḟṠ»
obtiene la lista['Hello, world!', 'Twister!']
, utilizando la compresión estática del diccionario de Jelly .La única diferencia entre el código original y el retorcido es el último carácter del enlace principal.
Ḣ
selecciona la primera cadena de la lista yṪ
selecciona la última.fuente
Python 2, 59 bytes
Retorcido:
Básicamente, coloca los
Twister!
datos en los índices impares de la cadena y luego cambia de eliminar los dos primeros caracteres (relleno) a eliminar todos los demás caracteres.fuente
print " Hello, world!" [2::]
Fisión ,
215162565350 bytesAquí hay un comienzo:
Pruébalo en línea!
Cuando torcido:
Pruébalo en línea!
Explicación
El
Hello, world!
código es bastante simple:D
genera un solo átomo, que va hacia abajo.\
(espejos) lo desvían hacia la segunda columna."Hello, world!"
imprime la cadena requerida.1
Es un portal. Teletransporta el átomo al siguiente1
en orden de lectura, conservando su dirección (esa es la que está al lado delr
).;
cual destruye el átomo y termina el programa.El flujo de control para el
Twister!
código es un poco más ... retorcido ...D
genera el átomo.\
lo desvía hacia la derecha, hacia el1
.1
. El átomo golpea elo
que simplemente cambia su masa, pero podemos ignorar eso. El código se envuelve para que el átomo1
vuelva a golpear el mismo , saltando dos filas. Nuevamente, podemos ignorarl
, el átomo se envuelve y golpea1
nuevamente. Ahora no hay más1
en el código, por lo que el átomo salta completamente hacia arriba1
en la parte superior.\
, ahora bajando nuevamente."Twister!"
imprime el código requerido.1
teletransporta el átomo una vez más, más allá del primero;
, pero hay otro;
esperando que termine el programa.fuente
Fisión , 35 bytes
Enfoque de fisión n. ° 3 (n. ° 4 contando el que edité en mi primera publicación).
Pruébalo en línea!
Pruébalo en línea!
Explicación
Esta es en realidad la más simple de las soluciones de fisión hasta el momento. En ambos programas hay dos puntos de entrada:
R
crea un átomo a la derecha yL
un átomo a la izquierda. En cualquier caso, el;
destruye a uno de ellos inmediatamente.Ahora en el
Hello, world!
programa, el átomo primero imprime la mitad de la cadena con"Hello, "
, luego\
y/
(que son espejos) desvían el átomo hacia la segunda línea que va hacia la izquierda."world!"
(leer en la dirección del átomo en movimiento) imprime el resto de la cadena.L
ahora es un no-op y también;
destruye este átomo, finalizando el programa.El
Twister!
programa es esencialmente el mismo pero rotado 180 grados. Esta vez, elL
átomo sobrevive y comienza a imprimir con"Twist"
. El\
y/
nuevamente lo desvían hacia la otra línea, ahora yendo a la derecha."er!
imprime el resto de la cadena,R
no funciona y;
finaliza el programa.fuente
Fisión, 53
Pruébalo en línea!
y torcido:
Pruébalo en línea!
fuente
Japt,
676157 bytesGuardado 6 bytes gracias a @JAtkin, 4 bytes gracias a @Ian
Retorcido:
Pruébelo en línea: original , retorcido
Cómo funciona
fuente
Twister!
reemplazando los espacios con.
."T.w.i.s.t.e.r.!. . . . . "k".(newline)"H.e.l.l.o.,. .w.o.r.l.d.!"k".
Python, 398
414 380 456bytes *Logré actualizar para que cumpla con las reglas, pero aún dudo en llamarlo competitivo. Como las líneas comentadas son necesarias para que se ejecute, las he incluido en el recuento de bytes
Esta solución no sigue las reglas, ya que imprimirá mensajes de error además de la salida permitida.Solo quería ver si esto se podía hacer en Python. Puede, pero es no bonita.
Cuando retorcido se convierte
fuente
rint '
cada línea.C (gcc) , 87 bytes
Sin torcer
Pruébalo en línea!
Retorcido
Pruébalo en línea!
fuente
Brainfuck,
467367285 bytesSin torcer
Pruébalo en línea!
Retorcido
Pruébalo en línea!
fuente