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 p1p2p3p4
deberí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 10
programas.
code-challenge
code-generation
Downgoat
fuente
fuente
p1p2p3...
serán siempre de p1 a pn ?Respuestas:
Pyth, 12
p1:
p2:
1
p3:
1
etc.
p1p2p3:
Salida:
3
Explicació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 de1
nuevo. Por lo tanto, pn + 1 es siempre1
. Cuando los programas están encadenados,p1
genera 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.1
Los 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 dep2
rendimientos1
. 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
DATA
objeto 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