Вызов:
Создайте программу или функцию, которая принимает целочисленный ввод, который выводит новую программу / функцию, как указано ниже.
Входные данные:
Целое число 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, функции / метод с правильными параметрами и типом возврата, полные программы. Ваш звонок.
- По умолчанию лазейки запрещены.
- Если возможно, добавьте ссылку с тестом для вашего кода.
- Также, пожалуйста, добавьте объяснение, если это необходимо.