Sfida:
Creare un programma o una funzione che accetta un input intero, che genera un nuovo programma / funzione come specificato di seguito.
Ingresso:
Numero intero n: tempo in secondi prima dell'esplosione della bomba a orologeria.
Produzione:
Il programma originale che aveva il tempo in secondi ncome input, produrrà un nuovo programma / funzione che procede come segue:
- Sono
ntrascorsi secondi dall'esecuzione del programma precedente? StampaBOOM! - Altrimenti: stampa un programma / funzione che, una volta eseguito, reimposta il timer sui
nsecondi (e si comporta come il primo programma / funzione emesso).
NOTA: non è esattamente lo stesso del primo programma / funzione emesso (almeno nella maggior parte delle lingue), poiché l'ora di inizio è cambiata (vedere l'esempio di chiarimento di seguito).
Esempio di pseudo-codice:
Diciamo che il programma originale è ABCe l'input è 60secondi:
ABCe 60uscite DEF(60).
- Se
DEF(60)viene eseguito entro 60 secondi, verrà emessoDEF_G(60), che si comporta esattamente comeDEF(60), ma con un nuovo orario di inizio. - Se
DEF(60)viene eseguito dopo 60 secondi, verrà emessoBOOM!.
Esempio di chiarimento sul significato di "ora di inizio":
- Il programma di base con i
60secondi di input viene eseguito alle12:00:00. Emette il primo programma di output con un tempo di inizio di12:00:00. - Questo primo programma di output con l'ora di inizio di
12:00:00viene eseguito alle12:00:45. Emette un secondo programma di output con un tempo di inizio di12:00:45. - Questo terzo programma di output con un orario di inizio di
12:00:45viene eseguito alle12:01:25. Emette un quarto programma di output con un tempo di inizio di12:01:25. - Questo quarto programma di output con un orario di inizio di
12:01:25viene eseguito alle12:05:00. Verrà emessoBOOM!.
Nota come verrà stampato il primo output BOOM!dopo 12:01:00, ma il programma di output è progredito, quindi anche se è 12:01:25al passaggio 3, verrà comunque emesso il programma successivo anziché BOOM!(poiché i programmi di output di output hanno tempi di avvio oltre quel primo programma di output) .
Regole della sfida:
- Si applicano le regole Quine predefinite.
- Almeno
nsecondi dovrebbero essere passati. Quindi, se l'input è60e l'ora di inizio era12:00:00,12:01:00verrà comunque emesso il programma v2, ma12:01:01verrà emessoBOOM!. - I programmi di output non prenderanno alcun input ( tranne per un parametro vuoto inutilizzato se è più breve ). L'ora di inizio dovrebbe essere data ai programmi successivi come valore "hardcoded" (motivo per cui l'output di un programma di output non è esattamente uguale al precedente (nella maggior parte delle lingue).
- Viene calcolata solo la dimensione del programma / funzione principale in termini di byte.
- Puoi generare il programma / funzione come stringa (o formato ragionevole comparabile, come array / elenco di byte / caratteri), come funzione se la tua lingua supporta questo o altri formati ragionevoli (chiedi se non sei sicuro).
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti e tipo di ritorno, programmi completi. La tua chiamata.
- Sono vietate le scappatoie predefinite .
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si prega di aggiungere una spiegazione, se necessario.