La plupart d'entre nous, fans PERDUS, se souviennent de l'ordinateur sur lequel Desmond devait taper les caractères "4 8 15 16 23 42" toutes les 108 minutes, sinon le monde prendrait fin (ou n'est-ce pas?).
Le défi ici est de créer un programme qui ferait la même chose en exigeant que toutes les 108 secondes l'entrée 4 8 15 16 23 42
soit entrée ou elle affichera le message
Sorry, the world has ended with status code -1
Il doit avertir l'utilisateur à 100 secondes qu'il doit saisir un numéro avec le message
Enter, Quick!
Le programme doit pouvoir lire l'entrée à tout moment et s'il s'agit de l'entrée correcte, il réinitialisera la minuterie. Si une entrée incorrecte est donnée, rien ne se passe.
Le programme devrait s'exécuter indéfiniment. Ainsi, la chronologie après la dernière entrée valide ressemble
De 0 à 99 secondes: pas de sortie
à 100 secondes: Enter, Quick!
à 108 secondes: Sorry, the world has ended with status code -1
.
C'est le golf de code, donc la réponse la plus courte (en octets) qui accomplit cette tâche gagne! Bonne chance!
la source
Réponses:
bash, 160 octets
Je ne suis actuellement pas certain du comportement attendu après "la fin du monde".
Courez comme ceci:
2>&-
est requis pour ignorer STDERR, ce qui est autorisé par défaut .la source
JavaScript pour navigateur moderne,
252247242 octetsInstructions: exécutez-le dans la console d'un onglet vierge, cliquez sur son document pour obtenir le focus et commencez à taper à plusieurs reprises la chaîne. Tant que vous vous portez bien, vous n'aurez aucun retour. Actualisez et changez 1e5 en 1e4 pour rendre les choses plus intéressantes.
la source
Groovy, 244 ou 228 octets
Je me souvenais à tort que Java avait une méthode nextLine qui prenait un argument sur le temps d'attente, alors j'ai pensé que ce serait facile. Je ne pouvais pas trouver une méthode qui faisait cela, alors j'ai implémenté cela avec deux threads. C'est un peu encombrant. Tant pis.
Cela suppose que le comportement correct pour la fin du monde est que le processus se termine avec un code d'état de -1. Si le comportement prévu est de continuer à boucler et de s'attendre à ce qu'une force externe mette fin au monde (et par extension, au programme), la
;System.exit(-1)
partie peut être omise pour économiser 16 octets. Yay.À l'origine, j'ai écrit ceci pour utiliser le hashCode de la chaîne, mais cela s'est terminé plus longtemps qu'une comparaison exacte incorporant la chaîne car elle
hashCode
est longue.la source
APL (Dyalog Unicode) , 144 octets SBCS
Il s'avère que les deux parties exécutent APL…
Essayez-le en ligne!
:For t:in 100 8
boucle deux fois, une fois avect
(timput)100
et ensuite avect
as8
::For s:In⍳t
pours
(econds) à1
travers et tous les ɩ ndices jusqu'àt
⎕RTL←1
régler le R ÉPONSE T ime L imit à 1 (secondes){
…}
Appliquer le lambda anonyme suivant à cela (bien que cet argument ne soit pas utilisé)1E3::
dans les cas suivants, si une exception se produit:⍬
revenir[]
⋄
essayer:⍕4 8 15 16 23 42
stringifier les nombres requis⍞≡
demander l'entrée et comparer à cela (donne 0 ou 1)⍳
la première que de nombreux ɩ ndices ([]
ou [1] `→
aller à cette ligne (1 si[1]
, continuer à la ligne suivante si[]
):End
fin de boucle intérieure; passer à la seconde suivante du délai actuelt=3
est-ce le deuxième timeout (0 ou 1)?…
⌽⍨
Faites pivoter le nombre d'étapes suivant:'Enter, Quick!' 'Sorry, the world has ended with status code -1'
imprimer implicitement le texte approprié⊃
divulguer (pour imprimer sans espace de début et de fin):End
fin de la boucle extérieure: après avertissement, boucle; après avoir imprimé "Désolé ...", passez au programmela source
C ++ (gcc) , 395 octets
La compilation sous Linux nécessite le
-pthread
commutateur. MinGW s'en passe.Essayez-le en ligne!
la source