Napisz program (lub funkcję) (nazwijmy go P1), który po uruchomieniu wyświetla inny program P2 tego samego języka i dokładnie 1 bajt dłuższy niż P1.
Program P2 po uruchomieniu powinien wypisać trzeci program P3, który jest o 1 bajt dłuższy niż P2. P3 musi wygenerować program P4, który jest o jeden bajt dłuższy niż P3 itp. To samo dla P5, P6, ..., P∞.
Łańcuch programu powinien iść w nieskończoność lub do miejsca, w którym tłumacz nie jest już w stanie obsłużyć (ale musi pozostać jako teoretycznie poprawny program w języku)
Zasady
- Standardowe luki zabronione
- Wszystkie programy w łańcuchu powinny być w jednym języku
- Nie podano danych wejściowych. Wyjście przechodzi do wartości standardowej lub zwracanej przez funkcję
- Program musi zakończyć się po pewnym czasie. Program, który przestaje generować dane wyjściowe po określonym czasie, ale nigdy się nie kończy, nie kwalifikuje się
Najkrótszy program P1 w bajtach w każdym języku wygrywa!
"puts <<2*2,2\nputs <<2*2,2\n\n2"
rośnie o 2 przy każdej iteracji w Ruby. Nie mogłem znaleźć nic lepszego. : - /. Ciekawe wyzwanie!