En este desafío, escribirá un programa que genera un programa que es el doble de la longitud del programa original. El programa generado debería generar un nuevo programa, un programa que duplique su longitud.
Ejemplos
Si mi programa es a:
< a
> aa
< aa
> aaaa
< aaaa
> aaaaaaaa
Reglas
- No hay complementos de quine
- El programa original debe tener al menos un byte
- La secuencia teóricamente debería funcionar infinitamente
- Su programa no puede leer nada (archivo, stdio)
Su puntaje es del tamaño del programa original.
code-golf
sequence
quine
code-generation
Downgoat
fuente
fuente

Respuestas:
CJam, 10 bytes
Pruébalo aquí.
Explicación
fuente
JavaScript,
626137 bytes¡Gracias a @ Doᴡɴɢᴏᴀᴛ por la ayuda!
Original [37 bytes]:
Niño [74 bytes]:
Nieto [148 bytes]:
Alternativo (con impresión a la consola y como programa completo):
Original [61 bytes]:
Niño [122 bytes]:
Nieto [244 bytes]:
¡Cómo funciona!
1.
f=_=>Defina la función f comoconsole.log(...)2.
;f()Ejecutar la función f.3. (en la función f)
console.log(...)Imprima lo siguiente:f=texto literal "f ="${'_'.repeat((0+f).length+5)"_" repetido para la longitud de f, alterado para tener en cuenta los caracteres no incluidos en la cadena de f+f}La stringificación de la función f;f()texto literal "; f ()"Notas
console.loges necesario en lugar dealertporquealertno parece funcionar bien con cadenas realmente largas (al menos en la configuración de mi máquina / navegador)_'s se insertan en el nombre del parámetro (no utilizado) de la función f, para garantizar que se incluyan en la cadena de f.console.log) de la primera solución sobre la segunda: agregar10a la función en lugar de0convertirla en cadena hace que sea un byte más, eliminando la necesidad de agregar 1 a la longitud posterior, ahorrando un byte.fuente
0+ftambién debería funcionar para convertir la función en una cadena(f=_=>`(f=${'_'.repeat((0+f).length+5)+f})()`)()Minkolang 0.15 ,
1914 bytesOriginal , hijo , nieto .
Explicación
Lo que hace el bit entre
rs es duplicar el período final suficientes veces para cumplir el criterio de duplicación..es el carácter "detener programa", por lo que los muchos períodos al final no hacen nada excepto estar allí.fuente
CJam, 12 bytes
Cuando se ejecuta, esto imprimirá
que, a su vez, imprimirá
y así.
Pruébalo en línea!
fuente
Python 3, 51 bytes
Esto incluye una nueva línea final.
Qué salidas:
fuente
GolfScript, 11 bytes
Pruébalo en línea!
Cómo funciona el código fuente
Si el código fuente anterior se ejecuta una vez, la pila terminará como
donde la cadena vacía al principio corresponde al estado inicial de la pila (entrada vacía).
Dos copias del código fuente dejarían un estado final de
y así.
Que pasa despues
Después de ejecutar el código fuente, el intérprete hace lo siguiente:
Envuelve toda la pila en una matriz y empuja esa matriz en la pila.
Para una sola copia del código fuente, la pila ahora contiene
Se ejecutó
putscon la intención de imprimir la pila envuelta, seguido de un salto de línea.putsse define como{print n print}, por lo que hace lo siguiente.printimprime la copia envuelta de la pila sin inspeccionarla (es decir, sin convertirla en su representación de cadena). Esto envíaSTDOUT y muestra la copia de la pila desde la parte superior de la pila.
La pila ahora contiene
ejecuta el bloque de código que definimos previamente.:comienza guardando["" {: ".~"]} ".~"]el carácter de espacio, luego se".~"empuja y]envuelve la pila en una matriz.nempuja una cadena que consiste en un solo salto de línea.La pila ahora contiene
se ejecuta una vez más. Sin embargo, se redefinió cuando lo llamamos por primera vez y ahora contiene una matriz, no un bloque de código.De hecho, empuja
["" {: ".~"]} ".~"], dejando la pila comoFinalmente,
printimprime el elemento de la pila superior sin inspeccionarlo, enviandoa STDOUT.
fuente
𝔼𝕊𝕄𝕚𝕟, 26 caracteres / 36 bytes
Try it here (Firefox only).
Tenga en cuenta que hay una nueva línea final.
Explicación
Quine estándar:
⟮ⒸⅩ222+ᶈ0Modificaciones:
ôfunción para generar los quines de todos los resultados en lugar del último resultado (como se hace con la salida implícita)\u27ee⦃ᶈ0}\u27ef\ny cierre el bloque de copia para evitar conflictos con los bloques de copia posteriores.ď2para repetir la cuerda dos veces.fuente