Reto
En este desafío, escribirá el primer programa, p 1 , de una secuencia infinita de programas, en el que ejecutar p n genera / genera el programa p n + 1 . Al concatenar los primeros n> = 2 programas, la secuencia debería salir n.
Ejemplo
Digamos que los primeros 4 programas son:
p1 p2 p3 p4
Si tuviera que ejecutar p1, debería generar:
p2
Si tuviera que ejecutar p1p2, debería generar:
2
Si tuviera que ejecutarlo p1p2p3p4debería salir:
4
Si tuviera que ejecutar p4, debería generar el siguiente programa en la secuencia:
p5
Tanteo
Su puntaje es el recuento de bytes de los primeros 10programas.
code-challenge
code-generation
Downgoat
fuente
fuente

p1p2p3...serán siempre de p1 a pn ?Respuestas:
Pyth, 12
p1:
p2:
1p3:
1etc.
p1p2p3:
Salida:
3Explicación:
En la primera ejecución, esto da salida a la longitud de una sola cadena de caracteres,
1. Esto también pasa a ser un programa Pyth válido, que sale de1nuevo. Por lo tanto, pn + 1 es siempre1. Cuando los programas están encadenados,p1genera la longitud de los programas encadenados, que serán.fuente
Lua,
950900 bytesSin golf:
Explicación:
La primera línea toma toda la fuente del programa. Luego comparamos la duración de todo el programa con 1 + la duración de un solo programa. Si el tamaño del programa actual es menor que este valor, se imprime la fuente, que es el siguiente programa, p2, y salimos. Cada iteración es solo una quine. Cuando se juntan varios de estos, el condicional falla, e imprimimos la duración del programa concatenado dividido por la duración de un programa, que es el número de programas concatenados, n.
fuente
Vitsy , 19 bytes
No se trata de cadenas aquí, sino que usa trucos de métodos.
p1
p2
p3
Etc., etc.
Explicación a continuación:
Pruébalo en línea!
fuente
Vitsy , 14 bytes
Similar a las respuestas de Pyth y Jolf, estoy mapeando cadenas. La única diferencia es que uso las funciones de ajuste de línea para asegurarme de obtener siempre la longitud correcta.
p1
p2
Reemplace 1 con cualquier número único.
p3 y así sucesivamente coinciden con este patrón, y puede hacerlo hasta que
Integer.MAX_VALUE, la restricción entera del idioma.Explicación:
Pruébalo en línea!
fuente
En serio, 15 bytes
Primer programa, 6 bytes (contiene un no imprimible):
Hex Dump:
Este programa imprime
1: Pruébelo en líneaEl resto de los programas son todos
1, un programa válido que se imprime como la respuesta de Pyth. El programa original imprime la longitud de su código fuente menos 5 y termina inmediatamente.1Los s agregados al final aumentan la longitud del código fuente en 1 byte cada vez, pero nunca se ejecutan.fuente
Jolf , 14 bytes
Pruébalo aquí!
Cuando se ejecuta, esto imprime
1. Por lo tanto,p2 = 1. Ejecución dep2rendimientos1. Por lo tanto, para todosN > 1,pN = 1.Observe
p1p2:a-1q41. Esto se transmite a:Dado que la impresión implícita se deshabilita después de la primera impresión, esto se imprime
2, ya que la longitud del código fuente menos 4 es 2. Y una y otra vez.fuente
Rubí, 318 bytes
p 1 :
Cada programa separado p i genera esta línea de una línea:
_="_=%p;puts _%%_";puts _%_.Cuando agrega estas quines al final de p 1 , terminan como líneas en el
DATAobjeto porque están debajo de la magia__END__.Aquí hay una prueba:
Los diez primeros programas concatenados se ven así (318 bytes):
fuente
C #, 2099 + 7 = 2106 bytes
Primer programa (utiliza el indicador del compilador
/main:A):Segundo programa:
Tercer programa:
Tienes la idea.
fuente
Javascript ES6, puntaje
483455Programa 1, 77 bytes:
Programa 2 y más allá, 42 bytes cada uno:
fuente
PHP, 1470 bytes
Programa 1: 219 bytes:
programa 2 y más allá de 139 bytes:
usar como:
Utiliza una versión ligeramente golfizada de la técnica php quine detallada aquí: http://10types.co.uk/the-lab/a-minimal-php-quine/
fuente