Défi:
Créez un programme ou une fonction qui prend une entrée entière, qui génère un nouveau programme / fonction comme spécifié ci-dessous.
Contribution:
Entier n
: temps en secondes avant l'explosion de la bombe à retardement.
Production:
Le programme d'origine qui avait le temps en secondes n
en entrée, sortira un nouveau programme / fonction qui fait ce qui suit:
- Des
n
secondes se sont-elles écoulées depuis l'exécution du programme précédent? ImpressionBOOM!
- Sinon: Imprime un programme / fonction qui, une fois exécuté lui-même, réinitialise le temporisateur à
n
quelques secondes (et agit de la même manière que le premier programme / fonction sorti).
REMARQUE: Ce n'est pas exactement le même que le premier programme / fonction sorti (dans la plupart des langues au moins), car l'heure de début a changé (voir l'exemple de clarification ci-dessous).
Exemple de pseudo-code:
Disons que le programme d'origine est ABC
et l'entrée est en 60
secondes:
ABC
et 60
sorties DEF(60)
.
- Si
DEF(60)
est exécuté dans les 60 secondes, il sortiraDEF_G(60)
, ce qui sera exactement le même queDEF(60)
, mais avec une nouvelle heure de démarrage. - Si
DEF(60)
est exécuté après 60 secondes, il sortiraBOOM!
.
Exemple de clarification de ce que je veux dire par «heure de départ»:
- Le programme de base avec des
60
secondes d' entrée est exécuté à12:00:00
. Il sort le premier programme de sortie avec une heure de début de12:00:00
. - Ce premier programme de sortie avec l'heure de début de
12:00:00
est exécuté à12:00:45
. Il émet un deuxième programme de sortie avec une heure de début de12:00:45
. - Ce troisième programme de sortie avec une heure de début
12:00:45
est exécuté à12:01:25
. Il sort un quatrième programme de sortie avec une heure de début de12:01:25
. - Ce quatrième programme de sortie avec une heure de démarrage
12:01:25
est exécuté à12:05:00
. Il sortiraBOOM!
.
Notez comment la première sortie s'imprime BOOM!
ensuite 12:01:00
, mais le programme de sortie a progressé, même s'il se trouve 12:01:25
à l'étape 3, il restitue le programme suivant au lieu de BOOM!
(car les programmes de sortie de sortie ont des heures de démarrage au-delà de ce premier programme de sortie) .
Règles du défi:
- Les règles de quine par défaut s'appliquent.
- Au moins
n
quelques secondes auraient dû s'écouler. Donc, si l'entrée est60
et l'heure de début était12:00:00
,12:01:00
elle produira toujours le programme v2, mais12:01:01
elle produiraBOOM!
. - Les programmes de sortie ne prendront aucune entrée ( sauf pour un paramètre inutilisé vide s'il est plus court ). L'heure de début doit être donnée aux programmes suivants en tant que valeur «codée en dur» (c'est pourquoi la sortie d'un programme de sortie n'est pas exactement la même que la précédente (dans la plupart des langues).
- Seule la taille de votre programme / fonction principale est comptée en termes d'octets.
- Vous pouvez sortir le programme / la fonction soit sous forme de chaîne (ou dans un format raisonnable comparable, comme un tableau d'octets / caractères / liste), comme fonction si votre langue le prend en charge, soit dans d'autres formats raisonnables (veuillez demander si vous n'êtes pas sûr).
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- Veuillez également ajouter une explication si nécessaire.