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 ncomo entrada, generará un nuevo programa / función que hace lo siguiente:
- ¿
nHan 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
nsegundos (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 ABCy la entrada es 60segundos:
ABCy 60salidas 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
60segundos 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:00se 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:45se 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:25se 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:25en 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
nsegundos deberían haber pasado. Entonces, si la entrada es60y el tiempo de inicio fue12:00:00,12:01:00todavía emitirá el programa v2, pero a12:01:01la 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.