Questa sfida è in onore delle luci di Natale appiccicose nella casa dei miei suoceri.
La sfida è creare un output grafico che mostri la decorazione in "tempo reale".
Il video (GIF o altro formato) avrà "luci" verticali e orizzontali n-by-m . 5 <= m, n <= 40 . La dimensione di frame e la risoluzione possono variare a seconda n ed m , ma devono essere almeno 50x50 pixel per n, m = 5 (vettore grafica è OK). Una foto con n=6
e m=5
sarà simile a questa:
La decorazione:
Colori:
Tutte le luci avranno una delle seguenti 6 RGB-colori {255,0,0}
, {0,255,0}
, {0,0,255}
, {255,255,0}
, {0,255,255}
e {255,0,255}
.
Animazione:
n
em
verrà preso come input in qualsiasi formato ragionevole e nell'ordine che ti piace- L'immagine cambierà ogni
dt = 25 ms
. Le deviazioni vanno bene se sono dovute a "fattori esterni" come limitazione nell'interprete, computer lento ecc.- Se è impossibile impostare manualmente la fase temporale, viene accettata la fase temporale predefinita.
- Tutte le luci saranno rosse (
{255,0,0}
) at=0
. - C'è sempre una probabilità del 5% che la prima luce (in alto a sinistra) cambierà colore. Tutti i colori (tranne il colore che ha attualmente) dovrebbero essere ugualmente probabili.
Ogni luce (tranne la prima) otterrà il colore della luce alla sua sinistra. Se la luce è all'estrema sinistra, otterrà il colore della luce all'estrema destra sulla riga sopra. Le luci sono numerate come mostrato di seguito. Il numero di luce
k
otterrà il colore del numero di lucek-1
.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
L'output dovrebbe in teoria funzionare per sempre (a meno che il tuo linguaggio / interprete non abbia alcune limitazioni che lo impediscono).
- Fornisci un campione di almeno 5 secondi, preferibilmente più nella risposta (questo è un incoraggiamento, non un requisito). (Ovviamente anche un collegamento a TIO o simili è OK: D)
- Sono accettati cornici, assi, linee di griglia ecc.
6-by-5
15-by-30
r,g,y,b,
ecc. sono più brevi in diverse lingue.
drawnow
quando l'ho implementato in MATLAB, poiché il risultato è stato troppo lento. Penso che la risposta debba essere: se è una scelta progettuale che l'interprete abbia una risoluzione temporale minima fissa> = 25 ms, allora va bene. Se è dovuto a un'implementazione scarsa / semplice, un interprete online sovraccarico / lento ecc., Allora non va bene.