Objetivo:
Codifique dos programas donde cada uno de los programas genere ambos códigos fuente entrelazados por carácter, como una cremallera, un Quine de doble rendija. La salida de un Quine de doble rendija comienza con el primer carácter del código fuente del primer programa. Si el código fuente de uno de los programas es más corto que el otro, entonces el resto de la salida debe rellenarse con el resto del código fuente más largo.
Reglas:
- Puede usar cualquier lenguaje de programación para ambos programas, no necesariamente el mismo lenguaje de programación para ambos.
- Sus programas no deben recibir ninguna entrada de un archivo, nombre de archivo, red, el otro programa o cualquier otra cosa.
Criterios obligatorios:
- Hay una trampa, en algún lugar de la salida, la palabra
QUINE
en mayúsculas debe existir, sin interrupciones. - Debe indicar qué dos lenguajes de programación está utilizando. Si está utilizando el mismo lenguaje de programación para ambos, entonces solo necesita indicar un lenguaje de programación.
- Ambos programas deberían poder ejecutarse o ser interpretados, respectivamente, independientemente del otro programa.
Ejemplo:
Teniendo este código fuente de ejemplo del programa uno :
"QIE"
Teniendo este código fuente de ejemplo del programa dos :
"UN"
Entonces, la salida de Quine de doble rendija válida de ambos programas debe ser:
""QUINE""
Este es el código de golf, el menor número de bytes al sumar la longitud de ambos códigos fuente, y obviamente también la longitud de la salida de cada programa, ¡gana!
A
yXYZ
sería intercalado?AXYZ
?.+
orz
worksRespuestas:
CJam,
4947 bytesy
ambos imprimen
Pruébelo en línea: programa 1 , programa 2 , prueba de validez
Cómo trabajan ellos
El programa 1 termina aquí y tiene una representación de cadena de todo su código fuente (que cada carácter repite dos veces), así como la cadena e # QUINE en la pila.
El programa 2 analiza adicionalmente
e#QUINE
, que es un comentario.En ambos casos, CJam imprime las dos cadenas automáticamente, lo que resulta en la salida mencionada anteriormente.
fuente
En serio,
465642 bytesHex Dump:
El segundo programa es este programa exacto invertido. Contiene un carácter invisible, pero el recuento de bytes es correcto. Ambos programas generan esta cadena palindrómica:
(Por alguna razón, muestra el carácter invisible cuando lo emite en mi terminal. Realmente no entiendo ese byte 7F).
Cómo funciona:
El resto del programa no se ejecuta.
Luego la otra dirección:
En este punto, ahora estamos ejecutando el primer programa anterior, por lo que la ejecución continúa como se describe allí.
Estoy explotando fuertemente el hecho de que varios comandos no hacen nada a las cadenas o pilas vacías aquí. También estoy explotando el comportamiento inesperado de
t
cuando solo hay un elemento en la pila. No espere que este programa funcione en futuras versiones de Seriously.A medida que la versión en línea del intérprete Seriously continúa sin funcionar, tendrá que descargar el intérprete y ejecutarlo en su propia máquina para probarlo.
fuente
GolfScript, 46 bytes
y
ambos imprimen
Pruébelo en línea: programa 1 , programa 2 , prueba de validez
Cómo funciona
El código fuente del programa 2 analiza adicionalmente
QUINE\n
, que son dos tokens indefinidos.fuente
Perl, 61 + 60 = 121 bytes
Programa 1:
Programa 2:
Pensé en probar esto en un lenguaje que no sea de golf. Esto es básicamente un constructor universal de quine en Perl modificado para duplicar cada carácter antes de imprimirlo y agregarlo
QUINE
al final. Luego solo tenemos que pegar un comentario al final del código para compensar el texto agregado.(Escribí esto sin mirar realmente las otras respuestas. Resulta que sería posible guardar un byte colocando el comentario completo en un programa, pero no estoy seguro de si debería copiar descaradamente algoritmos como ese).
fuente