Вы должны написать программу или функцию , которая, когда дана непустая строка S из N символов ASCII для печати † , выводит программу , которая будет завершаться с кодом выхода C , где C является ASCII элемент кода в положении 0 в S . Эта программа , которую вы напишете дополнительно выводить программу P , таким образом , что при запуске, он выходит с выходом кодом C ' , где C' является ASCII элемент кода в положении 1 в S . Программа P выведет другую программу P ′ . Этот процесс повторяется до тех пор, пока в S не останется символов, После того, как это сделано, вы должны ничего не выводить, за которым следует необязательный перевод строки; и должен выйти с кодом выхода 0.
† Знаки между 0x20и 0x7eвключительно.
Еще несколько правил:
- Самомодифицирующиеся программы недопустимы: вы должны вывести источник в STDOUT (или сначала вернуть значение)
- Вы не можете читать свой собственный исходный код.
Победит самая короткая такая программа в байтах.
Для некоторого элементарного тестирования может использоваться этот скрипт ruby . (Первый аргумент - это способ вызова сценария, второй - программа, а третий - входная строка.)
Гипотетический пример
Скажи, что программа есть FOO. Когда дана строка «ABC», она выводит BARA. Эта программа выходит с кодом 65и выходами BARB. Это в свою очередь выходит с кодом 66и выходами BARC. Эта программа выходит с кодом 67и выходами BAR!. Это ничего не выводит и выходит с кодом 0.
33 throwброска произвольного числа. Вы используете негативы для уровня ОС, а смещение -512. ИДК тоже много, но я смотрю здесь: complang.tuwien.ac.at/forth/gforth/Docs-html/…
0это успех tio.run/nexus/…