Herausforderung:
Erstellen Sie ein Programm oder eine Funktion, die eine ganzzahlige Eingabe akzeptiert und ein neues Programm / eine neue Funktion wie unten angegeben ausgibt.
Eingang:
Ganzzahl n
: Zeit in Sekunden, bevor die Zeitbombe explodiert.
Ausgabe:
Das ursprüngliche Programm, das die Zeit in Sekunden n
als Eingabe hatte, gibt ein neues Programm / eine neue Funktion aus, die Folgendes ausführt:
- Sind
n
Sekunden vergangen, seit das vorherige Programm ausgeführt wurde? DruckenBOOM!
- Sonst: Drucken Sie ein Programm / eine Funktion, die, wenn sie selbst ausgeführt wird, den Timer auf
n
Sekunden zurücksetzt (und sich wie das erste ausgegebene Programm / die erste ausgegebene Funktion verhält).
HINWEIS: Es ist nicht genau dasselbe wie das erste ausgegebene Programm / die erste ausgegebene Funktion (zumindest in den meisten Sprachen), da sich die Startzeit geändert hat (siehe Erläuterungsbeispiel unten).
Pseudocode Beispiel:
Angenommen, das ursprüngliche Programm ist ABC
und die Eingabe ist 60
Sekunden:
ABC
& 60
Ausgänge DEF(60)
.
- Wenn
DEF(60)
es innerhalb von 60 Sekunden ausgeführt wird, wird es ausgegebenDEF_G(60)
, was genau so funktioniertDEF(60)
, jedoch mit einer neuen Startzeit. - Wenn
DEF(60)
es nach 60 Sekunden ausgeführt wird, wird es ausgegebenBOOM!
.
Klärungsbeispiel, was ich mit "Startzeit" meine:
- Das Basisprogramm mit den eingegebenen
60
Sekunden wird um ausgeführt12:00:00
. Es gibt das erste Ausgabeprogramm mit einer Startzeit von aus12:00:00
. - Dieses erste Ausgabeprogramm mit Startzeit von
12:00:00
wird um ausgeführt12:00:45
. Es gibt ein zweites Ausgabeprogramm mit einer Startzeit von aus12:00:45
. - Dieses dritte Ausgabeprogramm mit einer Startzeit von
12:00:45
wird ausgeführt12:01:25
. Es gibt ein viertes Ausgabeprogramm mit einer Startzeit von aus12:01:25
. - Dieses vierte Ausgabeprogramm mit einer Startzeit von
12:01:25
wird ausgeführt12:05:00
. Es wird ausgegebenBOOM!
.
Beachten Sie, wie der erste Ausgang würde Druck BOOM!
nach 12:01:00
, aber das Ausgabeprogramm so auch Fortschritte gemacht hat , obwohl es 12:01:25
in Schritt 3, wird es noch geben das nächste Programm statt BOOM!
(weil die Ausgangs-of-Ausgabeprogramme hat mal über diese erste Ausgabe Programmstart) .
Herausforderungsregeln:
- Es gelten die Standardregeln für Quine.
- Es sollten mindestens
n
Sekunden vergangen sein. Wenn also die Eingabe ist60
und die Startzeit war12:00:00
,12:01:00
wird das v2-Programm weiterhin ausgegeben, aber12:01:01
ausgegebenBOOM!
. - Die Ausgabeprogramme nehmen keine Eingabe entgegen ( außer einem leeren, nicht verwendeten Parameter, wenn dieser kürzer ist ). Die Startzeit sollte für die nächsten Programme als "fest codierter" Wert angegeben werden (weshalb die Ausgabe eines Ausgabeprogramms nicht genau mit der vorherigen übereinstimmt (in den meisten Sprachen).
- Nur die Größe Ihres Hauptprogramms / Ihrer Hauptfunktion wird in Bytes gezählt.
- Sie können das Programm / die Funktion entweder als Zeichenfolge (oder als vergleichbares vernünftiges Format wie Byte / Zeichenarray / Liste), als Funktion, wenn Ihre Sprache dies unterstützt, oder als andere vernünftige Formate ausgeben (bitte fragen Sie, wenn Sie sich nicht sicher sind).
Allgemeine Regeln:
- Dies ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich nicht von Code-Golf-Sprachen davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, eine möglichst kurze Antwort für "jede" Programmiersprache zu finden. - Für Ihre Antwort gelten Standardregeln , sodass Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden dürfen. Ihr Anruf.
- Standardschlupflöcher sind verboten.
- Wenn möglich, fügen Sie bitte einen Link mit einem Test für Ihren Code hinzu.
- Fügen Sie bei Bedarf auch eine Erklärung hinzu.