Desafío:
Cree un programa o función que tome una entrada entera, que genere un nuevo programa / función como se especifica a continuación.
Entrada:
Entero n
: tiempo en segundos antes de que explote la bomba de tiempo.
Salida:
El programa original que tenía el tiempo en segundos n
como entrada, generará un nuevo programa / función que hace lo siguiente:
- ¿
n
Han pasado segundos desde que se ejecutó el programa anterior? ImpresiónBOOM!
- De lo contrario: imprima un programa / función que, cuando se ejecuta, restablece el temporizador a
n
segundos (y actúa igual que el primer programa / función emitido).
NOTA: No es exactamente lo mismo que el primer programa / función de salida (al menos en la mayoría de los idiomas), porque la hora de inicio ha cambiado (consulte el ejemplo de aclaración a continuación).
Ejemplo de pseudocódigo:
Digamos que el programa original es ABC
y la entrada es 60
segundos:
ABC
y 60
salidas DEF(60)
.
- Si
DEF(60)
se ejecuta dentro de los 60 segundos, saldráDEF_G(60)
, que actúa exactamente igualDEF(60)
, pero con un nuevo tiempo de inicio. - Si
DEF(60)
se ejecuta después de 60 segundos, saldráBOOM!
.
Ejemplo de aclaración a lo que me refiero con 'hora de inicio':
- El programa base con
60
segundos de entrada se ejecuta en12:00:00
. Emite el primer programa de salida con un tiempo de inicio de12:00:00
. - Este primer programa de salida con hora de inicio
12:00:00
se ejecuta en12:00:45
. Produce un segundo programa de salida con un tiempo de inicio de12:00:45
. - Este tercer programa de salida con un tiempo de inicio
12:00:45
se ejecuta en12:01:25
. Produce un cuarto programa de salida con un tiempo de inicio de12:01:25
. - Este cuarto programa de salida con un tiempo de inicio
12:01:25
se ejecuta en12:05:00
. Es la salidaBOOM!
.
Tenga en cuenta cómo se imprimirá la primera salida BOOM!
después 12:01:00
, pero el programa de salida ha progresado, por lo que a pesar de que está 12:01:25
en el paso 3, seguirá emitiendo el siguiente programa en lugar de BOOM!
(porque los programas de salida de salida tienen tiempos de inicio más allá de ese primer programa de salida) .
Reglas de desafío:
- Se aplican las reglas predeterminadas de quine.
- Al menos
n
segundos deberían haber pasado. Entonces, si la entrada es60
y el tiempo de inicio fue12:00:00
,12:01:00
todavía emitirá el programa v2, pero a12:01:01
la salidaBOOM!
. - Los programas de salida no tomarán ninguna entrada ( excepto un parámetro vacío no utilizado si es más corto ). El tiempo de inicio se debe dar a los siguientes programas como valor 'codificado' (por lo que la salida de un programa de salida no es exactamente la misma que la anterior (en la mayoría de los idiomas).
- Solo el tamaño de su programa / función principal se cuenta en términos de bytes.
- Puede generar el programa / función como cadena (o formato razonable comparable, como byte / matriz de caracteres / lista), como función si su idioma admite este u otros formatos razonables (pregunte si no está seguro).
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Se aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código.
- Además, agregue una explicación si es necesario.