Scrivi un programma (o funzione) (chiamiamolo P1), che quando viene eseguito, genera un altro programma P2 della stessa lingua ed esattamente 1 byte più lungo di P1.
Il programma P2 quando eseguito, dovrebbe generare un terzo programma P3 che è 1 byte più lungo di P2. P3 deve generare un programma P4 che è un byte più lungo di P3, ecc. Lo stesso per P5, P6, ..., P∞.
La catena di programmi dovrebbe andare indefinitamente o in un posto dove l'interprete non può più gestire (ma deve rimanere come programma teoricamente valido nella lingua)
Regole
- Scappatoie standard vietate
- Tutti i programmi della catena dovrebbero essere in una lingua
- Non viene fornito alcun input. L'output passa allo stdout o al valore di ritorno della funzione
- Il programma deve terminare dopo un periodo di tempo. Un programma che interrompe la generazione dell'output dopo un certo intervallo di tempo ma non termina mai non si qualifica
Vince il programma più corto P1 in byte in ogni lingua!
"puts <<2*2,2\nputs <<2*2,2\n\n2"
cresce di 2 ad ogni iterazione in Ruby. Non sono riuscito a trovare niente di meglio. : - /. Sfida interessante!