Alguien construyó un reloj realmente elegante usando números de Fibonacci, que se ve muy bien pero es bastante inutilizable. Justo como nos gusta! Vamos a recrear esto.
El reloj se compone de 5 secciones correspondientes a los primeros cinco números de Fibonacci, comenzando desde 1 (es decir, 1, 1, 2, 3, 5):
ccbeeeee
ccaeeeee
dddeeeee
dddeeeee
dddeeeee
El reloj es capaz de mostrar el tiempo de 12 horas en incrementos de 5 minutos. Así es como funciona eso. Considere el tiempo 7:20. La hora 7 se puede descomponer en los números de Fibonacci dados como
7 = 2 + 5
También hay 4 unidades de cinco minutos. Los 4 se pueden descomponer como
4 = 2 + 1 + 1
Ahora las horas se muestran en rojo, los minutos se dividen en verde, y si se usa un número para horas y minutos, se muestra en azul. Si no se usa un número, permanece blanco. Entonces lo anterior se mostraría como:
BBGRRRRR
BBGRRRRR
WWWRRRRR
WWWRRRRR
WWWRRRRR
Pero espera hay mas. Las descomposiciones anteriores no son las únicas posibilidades. También se puede escribir 7 = 3 + 2 + 1 + 1
y 4 = 3 + 1
, lo que daría uno de
GGRWWWWW GGBWWWWW
GGBWWWWW GGRWWWWW
BBBWWWWW or BBBWWWWW
BBBWWWWW BBBWWWWW
BBBWWWWW BBBWWWWW
dependiendo de cual 1
se elija. Por supuesto, también hay otras combinaciones. El reloj elige entre todas las descomposiciones válidas al azar.
Como dije ... esto podría no ganar un premio de usabilidad, pero seguro que es agradable de ver.
El reto
Su tarea es implementar dicho reloj. Su programa (o función) debe imprimir una representación ASCII de la hora actual (redondeada al último múltiplo de 5 minutos) como se describe anteriormente en STDOUT o la alternativa más cercana. Puede elegir leer la hora en cualquier formato común como entrada u obtenerla con funciones de biblioteca estándar. No debe suponer que el tiempo actual / dado es divisible por 5 minutos.
Su solución debe elegir al azar de todas las representaciones posibles de la hora actual. Es decir, cada representación debe imprimirse con una probabilidad distinta de cero.
La medianoche y el mediodía deben tratarse como 0:00
(en lugar de 12:00
).
Opcionalmente, puede imprimir un único carácter de nueva línea al final.
Puede usar cuatro caracteres ASCII imprimibles distintos (códigos de caracteres 0x20 a 0xFE) en lugar de RGBW
. Indique su elección en su respuesta y úsela constantemente.
Este es el código de golf, por lo que gana la respuesta más corta (en bytes).