Desafío:
En un escenario hipotético, el temporizador de cuenta regresiva para una carrera tiene intervalos aleatorios entre los conteos, para evitar un arranque prematuro, por ejemplo
3 (0.82 seconds pass), 2 (0.67 seconds pass), 1
Entrada:
nada
Salida:
Escriba un programa (o función) que imprima los 3 números con un intervalo de tiempo aleatorio de 0,50 segundos a 1 segundo entre cada recuento.
Nota:
- El programa debe generar cada número (3, 2, 1) con el intervalo de tiempo aleatorio ( cualquier número entre 0,50 y 1 hasta las centésimas; sin codificación fija) entre cada uno. La precisión del intervalo aleatorio debe llegar a cientos (p. Ej .: 0,52). No es necesario que envíe el intervalo, solo el recuento.
- Como aclaró @JoKing, quiero decir uniformemente aleatorio (puede usar el generador pseudoaleatorio de su idioma.
- Como muchas personas han aclarado, realmente me refiero a cualquier número de 2 decimales entre 0.5 y 1. (0.50, 0.51, etc., hasta 0.98, 0.99, 1)
Este es el código de golf , por lo que gana el programa con el recuento de bytes más bajo.
Respuestas:
05AB1E , 12 bytes
Pruébalo en línea!
Pruébelo con la depuración habilitada: ¡ Pruébelo en línea!
fuente
SmileBASIC,
6462 bytesDesafortunadamente, no puedo usar WAIT ya que solo admite intervalos de 1/60 de segundo (cualquier cosa menos no suele ser útil ya que la entrada / salida solo se actualiza una vez por fotograma)
Esto requiere un ajuste dependiendo de la velocidad del sistema en el que se está ejecutando, por lo que podría no ser válido (46 bytes):
Versión WAIT no válida (36 bytes):
fuente
R ,
4644 bytespara una cuenta regresiva real:
Pruébalo en línea!
intervalo de impresión ya que inicialmente entendí mal el desafío (46 bytes) Gracias Giuseppe por guardar 2 caracteres.
Pruébalo en línea!
fuente
runif()
por defecto tiene los puntos finales izquierdo y derecho como0
y1
respectivamente, por lo querunif(1,.5)
debería funcionar igual para -2 bytes en ambos.Python 2 , 58 bytes
Pruébalo en línea!
Creé un generador de números aleatorios muy simple que toma el tiempo inicial (como lo hacen muchas personas).
Mejoras
fuente
1-time()%.5
debería hacer el truco. (Necesitas[3,2,1]
por cierto)for a in'321'
salva a otros dosAPL + WIN, 37 bytes
fuente
Java 8, 86 bytes
Imprime sin delimitador. Si eso no está permitido, son +2 bytes cambiando
print
aprintln
(delimitador de nueva línea).Pruébalo en línea.
Probar que los intervalos están en el rango correcto de
[500, 1000)
ms.Explicación:
fuente
Python 3, 122 bytes
Pruébalo en línea!
fuente
JavaScript (Node.js) ,
756560 bytesPruébalo en línea!
fuente
*1000%500+500
? Solo puedes usar*500+500
.Perl 5 , 39 bytes
Ajustó gradualmente a 39 bytes, gracias a @ jonathan-allan + @xcali.
Pruébalo en línea!
fuente
1-rand(.5)
trabajar?1-rand.5
también.Chip
-wingjj
, 33 bytesPruébalo en línea!
En Chip, no podemos esperar a que exactamente 1 / 100 de segundo, pero podemos esperar a 1 / la tecnología 256 de segundo, por lo que usamos aquí.
p
, Cuando se le preguntó, hará una pausa en la ejecución para el cabezal de pila (un byte) * 1 / 256 segundos. En cada ciclo, que siempre se establece el bit alto de la pila ( 128 / 256 ) y establecer todos los demás bits de pila al azar (con la?
's). Esto proporciona una distribución uniforme entre 0,50 y 1,00 segundos.Algunos de los argumentos
-w
y-gjj
, especifican que la entrada, en lugar de usar stdin, debe ser una cuenta regresiva desde0xFF
hasta0x00
(luego envoltura). Usamos esto para proporcionar los dos bits bajos para la cuenta regresiva. Todos los demás bits de salida permanecen constantes (en el valor correspondiente a ASCII0
).Finalmente, una vez que hemos terminado, terminamos el programa con
t
, evitando una pausa después del último número.fuente
[GAWK], 57 bytes
Pruébalo en línea!
fuente