Виклик:
Створіть програму або функцію, яка приймає цілий вхід, який виводить нову програму / функцію, як зазначено нижче.
Вхід:
Ціле число 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!
(тому що програми виводу-виводу мають час початку, що перевищує цю першу програму виводу) .
Правила виклику:
- Діють правила квоти за замовчуванням.
n
Треба було пройти хоча б секунди. Отже, якщо вхід є60
і час початку був12:00:00
,12:01:00
він все одно виведе програму v2, але при12:01:01
цьому виведеBOOM!
.- Вихідні програми не приймуть жодного вводу ( крім порожнього невикористаного параметра, якщо він коротший ). Початковий час для наступних програм повинен бути наданий як «жорстко закодоване» значення (саме тому вихід вихідної програми не точно такий, як попередній (у більшості мов).
- Тільки розмір вашої основної програми / функції рахується в байтах.
- Ви можете виводити програму / функцію як рядковий (або порівняно розумний формат, наприклад, байт / символьний масив / список), як функція, якщо ваша мова підтримує це, або інші розумні формати (будь ласка, запитайте, якщо ви не впевнені).
Загальні правила:
- Це є код-гольф, тому найкоротша відповідь у байтах виграє.
Не дозволяйте мовам з кодовим гольфом відштовхувати вас від публікації відповідей з мов, що не кодують гольф. Спробуйте придумати якомога коротшу відповідь на "будь-яку" мову програмування. - Стандартні правила застосовуються до вашої відповіді, тому вам дозволяється використовувати STDIN / STDOUT, функції / метод із відповідними параметрами та повним програмами типу return. Твій дзвінок.
- Лазівки за замовчуванням заборонені.
- Якщо можливо, додайте посилання з тестом для вашого коду.
- Також, будь ласка, додайте пояснення, якщо це необхідно.