La mayoría de nosotros, PERDIDOS, recordamos la computadora en la que Desmond tenía que escribir los caracteres "4 8 15 16 23 42" cada 108 minutos o el mundo se acabaría (¿o no?).
El desafío aquí es crear un programa que haga lo mismo al requerir que cada 108 segundos se ingrese la entrada 4 8 15 16 23 42
o se mostrará el mensaje
Sorry, the world has ended with status code -1
Debería advertir al usuario a los 100 segundos que necesita ingresar un número con el mensaje
Enter, Quick!
El programa debe poder leer la entrada en cualquier momento y, si es la entrada correcta, restablecerá el temporizador. Si se da una entrada incorrecta, no sucede nada.
El programa debe ejecutarse indefinidamente. Entonces, la línea de tiempo después de la última entrada válida parece
De 0 a 99 segundos sin salida:
A 100 segundos: Enter, Quick!
en 108 segundos: Sorry, the world has ended with status code -1
.
Este es el código de golf, por lo que gana la respuesta más corta (en bytes) que realiza esta tarea. ¡Buena suerte!
fuente
Respuestas:
bash, 160 bytes
Actualmente no estoy seguro de cuál es el comportamiento esperado después de "el mundo ha terminado".
Corre así:
2>&-
se requiere para ignorar STDERR, que está permitido por defecto .fuente
JavaScript de navegador moderno,
252247242 bytesInstrucciones: ejecute esto en la consola de una pestaña en blanco, haga clic en su documento para enfocarse y comience a escribir repetidamente la cadena. Mientras lo estés haciendo bien, no recibirás ningún comentario. Actualice y cambie 1e5 a 1e4 para hacer las cosas más interesantes.
fuente
Groovy, 244 o 228 bytes
Recordé erróneamente que Java tenía un método nextLine que requería un argumento sobre cuánto tiempo esperar, así que pensé que sería fácil. No pude encontrar un método que hiciera eso, así que implementé esto con dos hilos. Es un poco voluminoso. Oh bien.
Esto supone que el comportamiento adecuado para el fin del mundo es que el proceso salga con un código de estado de -1. Si el comportamiento previsto es seguir en bucle y esperar que una fuerza externa termine el mundo (y, por extensión, el programa), la
;System.exit(-1)
porción se puede omitir para guardar 16 bytes. Hurra.Originalmente escribí esto para usar el código hash de la cadena, pero eso terminó más que una comparación exacta incrustando la cadena porque
hashCode
es larga.fuente
APL (Dyalog Unicode) , SBCS de 144 bytes
Como resultado, ambas partes están ejecutando APL ...
Pruébalo en línea!
:For t:in 100 8
bucle dos veces, una vez cont
(timput)100
y luego cont
como8
::For s:In⍳t
fors
(econds)1
through y todos los ɩ nices hastat
⎕RTL←1
establecer el R espuesta T ime L IMIT a 1 (segundos){
...}
aplique la siguiente lambda anónima a eso (aunque este argumento no se utiliza)1E3::
a continuación, si ocurre alguna excepción:⍬
regreso[]
⋄
tratar:⍕4 8 15 16 23 42
stringificar los números requeridos⍞≡
solicitar entrada y comparar con eso (da 0 o 1)⍳
el primero que muchos ɩ ndices ([]
o [1] `→
ir a esa línea (1 si[1]
, continuar en la siguiente línea si[]
):End
final del bucle interno; proceder con el siguiente segundo del tiempo de espera actualt=3
¿Es este el segundo tiempo de espera (0 o 1)?...
⌽⍨
rotar los siguientes pasos:'Enter, Quick!' 'Sorry, the world has ended with status code -1'
imprimir implícitamente el texto apropiado⊃
revelar (para imprimir sin espacios iniciales y finales):End
final del bucle externo: después de la advertencia, bucle; después de imprimir "Lo siento ...", proceda a finalizar el programafuente
C ++ (gcc) , 395 bytes
Compilar en Linux requiere el
-pthread
cambio. MinGW prescinde.Pruébalo en línea!
fuente