Напишіть програму (або функцію) (назвемо її P1), яка під час запуску виводить іншу програму P2 тієї ж мови і рівно на 1 байт довше P1.
Програма P2 під час запуску повинна виводити третю програму P3, що на 1 байт довше P2. P3 повинен виводити програму P4, яка на один байт довше P3 тощо. Те саме для P5, P6, ..., P∞.
Ланцюжок програм повинен проходити нескінченно або до місця, де перекладач більше не може працювати (але повинен залишатися як теоретично вірною програмою на мові)
Правила
- Стандартні лазівки заборонені
- Усі програми в ланцюжку повинні бути однією мовою
- Введення не вводиться. Вихід переходить у stdout або функцію повернення значення
- Програма повинна закінчитися через певний проміжок часу. Програма, яка припиняє генерувати результат після певного часу, але ніколи не припиняється, не кваліфікується
Виграє найкоротша програма P1 в байтах на кожній мові!
"puts <<2*2,2\nputs <<2*2,2\n\n2"
зростає на 2 при кожній ітерації в Ruby. Я не зміг знайти нічого кращого. : - /. Цікавий виклик!