Вызов:
Создайте программу или функцию, которая принимает целочисленный ввод, который выводит новую программу / функцию, как указано ниже.
Входные данные:
Целое число n: время в секундах до взрыва бомбы замедленного действия.
Вывод:
Исходная программа, у которой на nвходе было время в секундах , выведет новую программу / функцию, которая выполняет следующие действия:
- Был
nприняты секунды , так как предыдущая программа была запущена? РаспечататьBOOM! - Иначе: Распечатайте программу / функцию, которая при запуске сама сбрасывает таймер обратно в
nсекунды (и действует так же, как первая выведенная программа / функция).
ПРИМЕЧАНИЕ. Это не совсем то же самое, что первая выведенная программа / функция (по крайней мере, в большинстве языков), потому что время запуска изменилось (см. Поясняющий пример ниже).
Пример псевдокода:
Скажем, оригинальная программа ABCи ввод в 60секундах:
ABCи 60выходы DEF(60).
- Если
DEF(60)запустить в течение 60 секунд, он выдастDEF_G(60), что действует точно так же, какDEF(60)и с новым временем запуска. - Если
DEF(60)запустить через 60 секунд, будет выведеноBOOM!.
Уточняющий пример, что я имею в виду под «временем начала»:
- Базовая программа с входными
60секундами запускается при12:00:00. Он выводит первую программу вывода с начальным временем12:00:00. - Эта первая программа вывода со временем
12:00:00запуска выполняется в12:00:45. Он выводит вторую программу вывода с начальным временем12:00:45. - Эта третья программа вывода со временем
12:00:45запуска выполняется в12:01:25. Он выводит четвертую программу вывода со временем запуска12:01:25. - Эта четвертая программа вывода с начальным временем
12:01:25запуска12:05:00. Это будет выводитьBOOM!.
Обратите внимание, как первый вывод будет печататься BOOM!после 12:01:00, но программа вывода продвинулась, поэтому, несмотря на то, что она находится 12:01:25на шаге 3, она все равно будет выводить следующую программу вместо BOOM!(поскольку программы вывода на выход имеют время запуска выше этой первой программы вывода) ,
Правила соревнований:
- Применяются правила Quine по умолчанию.
- По крайней мере,
nсекунды должны были пройти. Таким образом, если ввод60и время запуска было12:00:00, то12:01:00он все равно выведет программу v2, но на12:01:01него выведетBOOM!. - Выходные программы не будут принимать никаких входных данных ( за исключением пустого неиспользуемого параметра, если он короче ). Время запуска должно быть задано следующим программам в виде «жестко запрограммированного» значения (именно поэтому выходные данные выходной программы не совпадают с предыдущими (в большинстве языков).
- Только размер вашей основной программы / функции считается в байтах.
- Вы можете вывести программу / функцию либо в виде строки (или в сопоставимом разумном формате, таком как байт / массив / список символов), либо в качестве функции, если ваш язык поддерживает это, или в других разумных форматах (пожалуйста, спросите, если не уверены).
Основные правила:
- Это Код-гольф, так что кратчайший ответ в байтах выигрывает.
Не позволяйте языкам кода-гольфа отговаривать вас от публикации ответов на языках, не относящихся к кодексу. Попробуйте найти как можно более короткий ответ для «любого» языка программирования. - К вашему ответу применяются стандартные правила , поэтому вы можете использовать STDIN / STDOUT, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.