Ваша задача - создать самую длинную итерацию периода , в которой длина каждой программы в последовательности ограничена 500 байтами.
То есть, если вы повторите следующие шаги:
- Начните с вашей начальной программы
- Запустите текущую программу
- Вернитесь к шагу 2
В конечном итоге вы вернетесь к своей первоначальной программе. Количество программ в цикле - это ваш счет, который вы пытаетесь максимизировать.
Ни одна из программ не может вызвать каких-либо ошибок. Каждая программа должна также выполняться одинаково (например, без разных версий, реализаций, опций компилятора, платформ и т. Д.) (РЕДАКТИРОВАТЬ: Да, любое внешнее состояние, такое как состояние генератора псевдослучайных чисел, было включено в последний Заявление. Внешнее состояние должно быть «сброшено» после каждого запуска. Если вы используете истинные случайные числа, предполагается худший случай.)
Что отличает эту задачу от самой длинной итерации за период (кроме 100 против 500), так это то, что каждая программа в цикле также должна иметь размер 500 байт или меньше. Это означает, что самый длинный возможный цикл равен (256 ^ 501 - 1) / 255 или меньше. Это, конечно, большое число, но не такое большое с точки зрения того, сколько кода требуется для вычисления. Таким образом, задача состоит в том, чтобы использовать как можно больше (256 ^ 501 - 1) / 255 возможностей, а не занятие занятого бобра.
Программы не имеют доступа к своему исходному коду. Однако пустая программа будет разрешена , если вы хотите ( до тех пор , пока вы будете следовать другим правилам).
Так как проверять программы вручную было бы сложно, вы можете вычислить счет, используя теоретические методы. Вы должны включить объяснение оценки и правильности в вашу программу. Если вы не можете определить счет, вы можете вместо этого использовать нижнюю границу количества программ в цикле в качестве значения по умолчанию. Вам разрешается обновлять это по мере того, как вы находите лучшие нижние границы, или если вы находите точную фактическую оценку.
Это вызов кода , поэтому выигрывает самый высокий балл!
РЕДАКТИРОВАТЬ: Рекомендуется, чтобы вы написали, что ваш счет в научной записи, чтобы ответы были легче сопоставимы. Прекрасно иметь и другие формы партитуры, особенно если они более четко связаны с вашей программой. Также читателям предлагается отредактировать предыдущие ответы, чтобы соответствовать этому.