Qualcuno ha costruito un orologio davvero elegante usando i numeri di Fibonacci, che sembra davvero bello ma è piuttosto inutilizzabile. Proprio come piace a noi! Ricreamolo.
L'orologio è composto da 5 sezioni corrispondenti ai primi cinque numeri di Fibonacci, a partire da 1 (ovvero 1, 1, 2, 3, 5):
ccbeeeee
ccaeeeee
dddeeeee
dddeeeee
dddeeeee
L'orologio è in grado di visualizzare l'ora di 12 ore con incrementi di 5 minuti. Ecco come funziona. Considera il tempo 7:20. L'ora 7 può essere scomposta nei numeri di Fibonacci indicati come
7 = 2 + 5
Ci sono anche 4 unità di cinque minuti. I 4 possono essere decomposti come
4 = 2 + 1 + 1
Ora le ore sono visualizzate in rosso, i blocchi di minuti in verde e se un numero viene utilizzato sia per le ore che per i minuti, viene mostrato in blu. Se un numero non viene utilizzato affatto, rimane bianco. Quindi quanto sopra sarebbe mostrato come:
BBGRRRRR
BBGRRRRR
WWWRRRRR
WWWRRRRR
WWWRRRRR
Ma aspetta, c'è di più. Le suddette decomposizioni non sono le uniche possibilità. Si può anche scrivere 7 = 3 + 2 + 1 + 1e 4 = 3 + 1, il che darebbe uno dei
GGRWWWWW GGBWWWWW
GGBWWWWW GGRWWWWW
BBBWWWWW or BBBWWWWW
BBBWWWWW BBBWWWWW
BBBWWWWW BBBWWWWW
a seconda di quale 1viene scelto. Naturalmente ci sono anche altre combinazioni. L'orologio sceglie casualmente tutte le decomposizioni valide.
Come ho detto ... questo potrebbe non vincere un premio di usabilità, ma è sicuramente bello da vedere.
La sfida
Il tuo compito è implementare un tale orologio. Il programma (o la funzione) dovrebbe stampare una rappresentazione ASCII dell'ora corrente (arrotondata per difetto all'ultimo multiplo di 5 minuti) come descritto sopra su STDOUT o sull'alternativa più vicina. È possibile scegliere di leggere l'ora in qualsiasi formato comune come input o ottenerla con le funzioni di libreria standard. Non si deve presumere che il tempo corrente / dato sia divisibile per 5 minuti.
La tua soluzione deve scegliere casualmente tra tutte le possibili rappresentazioni dell'ora corrente. Cioè ogni rappresentazione deve essere stampata con probabilità diversa da zero.
Mezzanotte e mezzogiorno dovrebbero essere trattati come 0:00(al contrario di 12:00).
Se lo si desidera, è possibile stampare un singolo carattere di nuova riga finale.
È possibile utilizzare quattro caratteri ASCII stampabili distinti (codici di caratteri da 0x20 a 0xFE) al posto di RGBW. Indica la tua scelta nella risposta e usala in modo coerente.
Questo è il golf del codice, quindi vince la risposta più breve (in byte).