A maioria de nós, fãs PERDIDOS por aí, lembra-se do computador em que Desmond tinha que digitar os caracteres "4 8 15 16 23 42" a cada 108 minutos ou o mundo terminaria (ou seria?).
O desafio aqui é criar um programa que faça a mesma coisa, exigindo que a cada 108 segundos a entrada 4 8 15 16 23 42
seja inserida ou ela exiba a mensagem
Sorry, the world has ended with status code -1
Deve avisar o usuário em 100 segundos que ele precisa digitar um número com a mensagem
Enter, Quick!
O programa deve poder ler a entrada a qualquer momento e, se for a entrada correta, redefinirá o timer. Se uma entrada incorreta for fornecida, nada acontecerá.
O programa deve ser executado indefinidamente. Portanto, a linha do tempo após a última entrada válida parece
De 0 a 99 segundos: nenhuma saída
A 100 segundos: Enter, Quick!
Em 108 segundos: Sorry, the world has ended with status code -1
.
Isso é código de golfe, portanto, a resposta mais curta (em bytes) que realiza essa tarefa vence! Boa sorte!
fonte
Respostas:
bash, 160 bytes
Atualmente, estou incerto qual é o comportamento esperado depois que "o mundo acabou".
Execute assim:
2>&-
é necessário para ignorar STDERR, que é permitido por padrão .fonte
JavaScript do navegador moderno,
252247242 bytesInstruções: execute isso no console de uma guia em branco, clique no documento para obter foco e comece a digitar repetidamente a string. Enquanto você estiver indo bem, você não receberá nenhum feedback. Atualize e altere 1e5 para 1e4 para tornar as coisas mais interessantes.
fonte
Groovy, 244 ou 228 bytes
Lembrei-me de que o Java tinha um método nextLine que levava um argumento de quanto tempo esperar, então achei que isso seria fácil. Não consegui encontrar um método que fizesse isso, então implementei isso com dois threads. É um pouco volumoso. Ah bem.
Isso pressupõe que o comportamento adequado para o final do mundo seja o encerramento do processo com um código de status -1. Se o comportamento pretendido é manter o loop e esperar que uma força externa termine o mundo (e, por extensão, o programa), a
;System.exit(-1)
parte pode ser omitida para salvar 16 bytes. Yay.Originalmente, escrevi isso para usar o hashCode da string, mas isso acabou mais do que uma comparação exata que incorpora a string porque
hashCode
é longa.fonte
APL (Dyalog Unicode) , 144 bytes SBCS
Como se vê, ambos os lados estão executando o APL…
Experimente online!
:For t:in 100 8
loop duas vezes, uma vez comt
(timput) sendo100
e depois comt
como8
::For s:In⍳t
paras
(egundos)1
através e todos os Ɩ ndices atét
⎕RTL←1
definir o R esposto t ime L imit a uma (segunda){
…}
Aplique o seguinte lambda anônimo a isso (embora esse argumento não seja usado)1E3::
a seguir, se ocorrer alguma exceção:⍬
Retorna[]
⋄
experimentar:⍕4 8 15 16 23 42
especificar os números necessários⍞≡
solicitar entrada e comparar com isso (fornece 0 ou 1)⍳
a primeira vez que muitos Ɩ ndices ([]
ou [1] `→
vá para essa linha (1 se[1]
, continue na próxima linha se[]
):End
fim do loop interno; prossiga com o próximo segundo do tempo limite atualt=3
este é o segundo tempo limite (0 ou 1)?…
⌽⍨
Gire as seguintes etapas:'Enter, Quick!' 'Sorry, the world has ended with status code -1'
imprimir implicitamente o texto apropriado⊃
divulgar (imprimir sem espaço à esquerda e à direita):End
fim do loop externo: após aviso, loop; depois de imprimir "Desculpe ...", continue para encerrar o programafonte
C ++ (gcc) , 395 bytes
Compilar no Linux requer a
-pthread
opção. MinGW fica sem.Experimente online!
fonte