Escriba un programa (o función) (llamémoslo P1), que cuando se ejecuta, genera otro programa P2 del mismo lenguaje y exactamente 1 byte más largo que P1.
El programa P2 cuando se ejecuta, debería generar un tercer programa P3 que sea 1 byte más largo que P2. P3 debe generar un programa P4 que sea un byte más largo que P3, etc. Lo mismo para P5, P6, ..., P∞.
La cadena del programa debe ir indefinidamente o a un lugar donde el intérprete ya no pueda manejar (pero debe permanecer como un programa teóricamente válido en el lenguaje)
Reglas
- Lagunas estándar prohibidas
- Todos los programas de la cadena deben estar en un idioma.
- No se da entrada. La salida va a stdout o al valor de retorno de la función
- El programa debe finalizar después de un período de tiempo. Un programa que deja de generar resultados después de un cierto punto de tiempo pero nunca termina no califica
¡El programa más corto P1 en bytes en cada idioma gana!
"puts <<2*2,2\nputs <<2*2,2\n\n2"
crece en 2 en cada iteración en Ruby. No pude encontrar nada mejor. : - /. Interesante desafío!