Relacionado: Interquine
El programa A emite el código del programa B cuando se ejecuta, y B emite la fuente de C y C emite la fuente de A.
Esta vez no puedes intercambiar dos personajes e intercambiar de nuevo :)
Requisitos:
- Solo un idioma en todos los programas.
- Se aplican restricciones de lagunas estándar
- Todos los programas son diferentes. Un programa que se genera solo no califica. Dos que se producen entre sí tampoco califican.
- Todos los programas no están vacíos o tienen al menos 1 byte de longitud.
- No hay nada que leer porque stdin está conectado
/dev/null
(puede abusar de esta regla si puede ). La salida va a stdout. - No use funciones que generen resultados aleatorios.
Adicional:
- Dar explicaciones si es posible
El puntaje es la longitud del más corto (¿puede generar un programa largo a partir de uno corto?). Escriba la duración de todos los programas y resalte el número más pequeño. La nueva línea final no cuenta. La puntuación más baja gana .
Respuestas:
Python 3 , 50 bytes
Pruébalo en línea!
La última expresión va de
1*2%7
a2*2%7
a4*2%7
luego de vuelta a1*2%7
.fuente
1-2/_
forma un ciclo de 3 con(1,-1,3)
, que ahorra un byte al no necesitar escapar%
.n
,s='s=%r;print(s%%(s,-~%i%%3))';print(s%(s,-~1%3))
reemplazando3
conn
RProgN 2 ,
128 bytesExplicado
Debido a la naturaleza conveniente de cómo RProgN genera de manera predeterminada, esto deja el número, que recorre entre 1, 2 y 4, en la primera línea, y la versión en cadena de la función en la segunda. Inspirado por la respuesta de Python de @LeakyNun
Pruébalo en línea!
fuente
CJam , 17 bytes
Pruébalo en línea!
Probablemente no sea óptimo, pero esta es una modificación de mi enfoque del desafío anterior .
La idea básica es la misma, pero realizamos dos intercambios, uno de los cuales siempre es no operativo. Los índices son afectados
2
,3
y6
:fuente
CJam , 14 bytes
Pruébalo en línea!
Los otros programas tienen 26 y 38 bytes de longitud, respectivamente.
Explicación
¡Otro enfoque más!
fuente
Jalea , 11 bytes
Esto generó el mismo programa con 1 reemplazado por 2 , que reemplazó 2 por 4 , lo que genera el programa original.
Pruébalo en línea!
fuente
Python 3, 127, 127 y 127 bytes
huellas dactilares
huellas dactilares
Esto se basa en mi respuesta a la pregunta de Interquine, que se basa en una quine de Python normal. Y sé exactamente qué hacer cuando recibimos una pregunta de quad-interquine;)
fuente
CJam , 14 bytes
Pruébalo en línea!
Explicación
fuente
Javascript (ES6),
6355 bytesSolución alternativa usando
Function.prototype.toString
(cheaty, 30 bytes)fuente
Cálculo Lambda , 38 caracteres, 44 bytes
Una solución simple basada en la madre de todas las quines: el combinador y :
Usando reducciones beta vemos que esto es realmente una tri-interquina:
fuente
Java 8, 118 bytes
Sólo
int i=0;
es la diferencia entre las funciones / salidas (es cualquiera0
,1
o2
).Explicación:
Pruébalo en línea.
Explicación adicional:
quine -parte:
String s
contiene el código fuente sin formato%s
se usa para poner esta cadena en sí misma cons.format(...)
%c
,%2$c
y34
se utilizan para formatear las comillas dobles ("
)%%
se usa para formatear el módulo-signo (%
)s.format(s,...,34,s)
lo pone todo juntoDiferencia de las salidas / funciones:
El mismo enfoque que la mayoría de las otras respuestas:
int i
comienza a cualquiera0
,1
o2
++i%3
transforma esta a la siguiente (0→1
;1→2
;2→0
)fuente
> <> , 15 bytes
Pruébalo en línea!
Utiliza la misma forma general que otras> <> quines, pero tiene un carácter adicional al frente que se cicla a través de 1, 2 y 4.
fuente