Этот quine ouroboros на 128 языков (программа, которая выводит программу на другом языке, которая выводит программу на еще одном языке (125 языков позже), которая выводит оригинальную программу), довольно впечатляет. Но, к сожалению, он имеет статическое количество итераций.
Напишите программу, которая выводит программу (не обязательно на другом языке, но может быть), которая выводит программу, которая выводит программу и т. Д., Которая после n итераций выводит исходную программу в первый раз (то есть без промежуточного Программа должна быть такой же, как и оригинал, потому что в противном случае сработает квинэна, которая игнорирует ее ввод), где n - неотрицательное целое число, предоставленное в качестве ввода. Входные данные не могут быть просто числом в исходном исходном коде (например, помещаться x = <the value of n>
в начало вашей программы), оно должно быть одним из следующих:
- Передано как аргумент командной строки
- Читать со стандартного ввода
- Передается в качестве аргумента функции, которая возвращает / выводит новую программу.
Для промежуточных этапов в ouroboros ваша программа может быть либо полностью функционирующей программой, либо функцией без аргументов, которая при вызове возвращает / выводит следующую.
Вы не можете читать из самого исходного файла или использовать встроенные функции типа quine (я не думаю, что есть такие, которые могли бы это сделать, но они могут быть)
Чтобы было понятно, если n = 0
программа должна выводить свой собственный исходный код.
Если n = 1
, программа должна выводить другую программу, которая выводит исходный исходный код.
И так далее...
Побеждает несколько байтов!
Редактировать:
Я должен был написать «Для промежуточных этапов в уроборосе ваша программа может быть либо полностью функционирующей программой без ввода , либо функцией без аргументов». Если ваша программа выводит следующий в цепочке, затем ждет ввода, это нормально, но вашей программе не нужно исходное значение n.
getInput()
используется без какого-либо ввода. Или можно сказать, что мы вводим что-то случайное, что не используется для последующих итераций, чтобы избежать ошибок для getInput()
? Ака текущий ответ Python действителен?
n
, вывести программу, которая является «исходной программой» для иворической пятерки n
итераций, и что наш ответ не должен учитываться как одна из n
итераций. Это правильно?