Desafio:
Em um cenário hipotético, o cronômetro de contagem regressiva para uma corrida tem intervalos aleatórios entre as contagens, para impedir o início prematuro, por exemplo,
3 (0.82 seconds pass), 2 (0.67 seconds pass), 1
Entrada:
nada
Resultado:
Escreva um programa (ou função) que imprima os 3 números com um intervalo aleatório de 0,50 segundos a 1 segundo entre cada contagem.
Nota:
- O programa deve gerar cada número (3, 2, 1) com o intervalo de tempo aleatório ( qualquer número entre 0,50 e 1 até os centésimos; sem codificação codificada) entre cada um. A precisão do intervalo aleatório deve chegar às centenas (por exemplo: 0,52). Você não precisa emitir o intervalo, apenas a contagem.
- Como o @JoKing esclareceu, quero dizer uniformemente aleatório (você pode usar o gerador pseudo-aleatório do seu idioma.
- Como muitas pessoas esclareceram, eu realmente quero dizer qualquer número decimal entre 0,5 e 1. (0,50, 0,51, etc, até 0,98, 0,99, 1)
Isso é código-golfe , então o programa com a menor contagem de bytes vence.
Respostas:
05AB1E , 12 bytes
Experimente online!
Experimente com a depuração ativada: Experimente online!
fonte
SmileBASIC,
6462 bytesInfelizmente, não posso usar WAIT, pois ele suporta apenas intervalos de 1/60 de segundo (nada menos normalmente não é útil, pois a entrada / saída é atualizada apenas uma vez por quadro)
Isso requer ajustes, dependendo da velocidade do sistema em que está sendo executado, portanto, pode não ser válido (46 bytes):
Versão WAIT inválida (36 bytes):
fonte
R ,
4644 bytespara uma contagem regressiva real:
Experimente online!
intervalo de impressão, como eu inicialmente não entendi o desafio (46 bytes) Obrigado Giuseppe por salvar 2 caracteres.
Experimente online!
fonte
runif()
por padrão, tem os pontos de extremidade esquerdo e direito como0
e1
respectivamente, portanto,runif(1,.5)
deve funcionar da mesma forma para -2 bytes em ambos.Python 2 , 58 bytes
Experimente online!
Criei um gerador de números aleatórios muito simples que leva o tempo de propagação (como muitas pessoas).
Melhorias
fonte
1-time()%.5
deve fazer o truque. (Você precisa[3,2,1]
pelo caminho)for a in'321'
poupa outros doisAPL + WIN, 37 bytes
fonte
Java 8, 86 bytes
Imprime sem delimitador. Se isso não for permitido, são +2 bytes mudando
print
paraprintln
(delimitador de nova linha).Experimente online.
Prove que os intervalos estão na faixa correta de
[500, 1000)
ms.Explicação:
fonte
Python 3, 122 bytes
Experimente online!
fonte
JavaScript (Node.js) ,
756560 bytesExperimente online!
fonte
*1000%500+500
? Você pode apenas usar*500+500
.Perl 5 , 39 bytes
Ajustado gradualmente para 39 bytes, graças a @ jonathan-allan + @xcali.
Experimente online!
fonte
1-rand(.5)
trabalhar?1-rand.5
também.Chip
-wingjj
, 33 bytesExperimente online!
Em Chip, não podemos esperar por exatamente 1 / 100 de segundo, mas podemos esperar por 1 / 256 de segundo, por isso usamos isso aqui.
p
, Quando perguntado, irá parar a execução para a cabeça pilha (um byte) * 1 / 256 segundos. Em cada ciclo, sempre definir o bit alta da pilha ( 128 / 256 ) e definir todos os outros bits pilha aleatoriamente (com o?
's). Isso fornece uma distribuição uniforme entre 0,50 e 1,00 segundos.Alguns dos argumentos,
-w
e-gjj
, especificam que a entrada, em vez de usar stdin, deve ser uma contagem regressiva de0xFF
para0x00
(em seguida, quebra automática). Usamos isso para fornecer os dois bits mais baixos para a contagem regressiva. Todos os outros bits de saída permanecem constantes (no valor correspondente a ASCII0
).Finalmente, assim que terminamos, encerramos o programa com
t
, impedindo uma pausa após o último número.fonte
[GAWK], 57 bytes
Experimente online!
fonte