Wyzwanie:
Utwórz program lub funkcję, która pobierze liczbę całkowitą, która wyprowadza nowy program / funkcję, jak określono poniżej.
Wejście:
Liczba całkowita n
: czas w sekundach przed wybuchem bomby zegarowej.
Wynik:
Oryginalny program, który jako czas wprowadził czas w sekundach n
, wyświetli nowy program / funkcję, która wykonuje następujące czynności:
- Czy
n
minęły sekundy od uruchomienia poprzedniego programu? WydrukowaćBOOM!
- W przeciwnym razie: Wydrukuj program / funkcję, która po uruchomieniu zresetuje licznik z powrotem do
n
sekund (i działa tak samo jak pierwszy program / funkcja, która została uruchomiona ).
UWAGA: Nie jest dokładnie taki sam jak pierwszy wyprowadzony program / funkcja (przynajmniej w większości języków), ponieważ zmienił się czas rozpoczęcia (patrz przykład wyjaśnienia poniżej).
Przykład pseudokodu:
Powiedzmy, że oryginalny program jest, ABC
a dane wejściowe to 60
sekundy:
ABC
i 60
wyjścia DEF(60)
.
- Jeśli
DEF(60)
zostanie uruchomiony w ciągu 60 sekund, zostanie wygenerowany sygnał wyjściowyDEF_G(60)
, który działa dokładnie tak samo jakDEF(60)
, ale z nowym czasem rozpoczęcia. - Jeśli
DEF(60)
zostanie uruchomiony po 60 sekundach, zostanie wyprowadzonyBOOM!
.
Przykład wyjaśnienia, co mam na myśli przez „czas rozpoczęcia”:
- Program podstawowy z
60
sekundami wprowadzania jest uruchamiany w12:00:00
. Wysyła pierwszy program wyjściowy z czasem rozpoczęcia wynoszącym12:00:00
. - Ten pierwszy program wyjściowy z czasem rozpoczęcia
12:00:00
jest uruchamiany o godzinie12:00:45
. Wysyła drugi program wyjściowy z czasem rozpoczęcia wynoszącym12:00:45
. - Ten trzeci program wyjściowy z czasem rozpoczęcia
12:00:45
jest uruchamiany o godzinie12:01:25
. Wysyła czwarty program wyjściowy z czasem rozpoczęcia wynoszącym12:01:25
. - Czwarty program wyjściowy z czasem rozpoczęcia
12:01:25
jest uruchamiany o godzinie12:05:00
. WyjdzieBOOM!
.
Uwaga jak pierwsze wyjście byłoby wydrukować BOOM!
po 12:01:00
, ale program wyjście postępuje tak, mimo że 12:01:25
w punkcie 3, to będzie jeszcze wyjście następny program zamiast BOOM!
(bo wyjście-of-wyjścia programów został razy poza tym pierwszym programie wyjściowego wyjściowy) .
Zasady konkursu:
- Obowiązują domyślne zasady quine.
n
Powinny minąć przynajmniej sekundy. Więc jeśli wejście jest60
i czas rozpoczęcia był12:00:00
,12:01:00
to nadal będzie wypisywać program v2, ale przy12:01:01
nim będzie wypisywaćBOOM!
.- Programy wyjściowe nie przyjmą żadnych danych wejściowych ( z wyjątkiem pustego, nieużywanego parametru, jeśli jest krótszy ). Czas rozpoczęcia należy podawać kolejnym programom jako wartość „zakodowaną na stałe” (dlatego wyjście programu wyjściowego nie jest dokładnie takie samo jak poprzednie (w większości języków).
- Tylko rozmiar głównego programu / funkcji jest liczony w bajtach.
- Możesz wyprowadzić program / funkcję jako ciąg znaków (lub porównywalny rozsądny format, taki jak bajt / tablica znaków / lista), jako funkcję, jeśli Twój język to obsługuje, lub inne rozsądne formaty (zapytaj, jeśli nie jesteś pewien).
Główne zasady:
- To jest golf-golf, więc najkrótsza odpowiedź w bajtach wygrywa.
Nie pozwól, aby języki code-golf zniechęciły Cię do publikowania odpowiedzi w językach innych niż kodowanie Spróbuj znaleźć możliwie najkrótszą odpowiedź na „dowolny” język programowania. - Do odpowiedzi mają zastosowanie standardowe reguły , więc możesz używać STDIN / STDOUT, funkcji / metody z odpowiednimi parametrami i zwracanymi typami, pełnych programów. Twoja decyzja.
- Domyślne luki są zabronione.
- Jeśli to możliwe, dodaj link z testem swojego kodu.
- W razie potrzeby dodaj również wyjaśnienie.