Diese Herausforderung ist zu Ehren der klebrigen Weihnachtsbeleuchtung in meinem Haus.
Die Herausforderung besteht darin, eine grafische Ausgabe zu erstellen, die die Dekoration in "Echtzeit" zeigt.
Das Video (GIF oder ein anderes Format) hat n-mal-m vertikale und horizontale "Lichter". 5 <= m, n <= 40 . Die Bildgröße und Auflösung können in Abhängigkeit von n und m variieren , müssen jedoch mindestens 50 x 50 Pixel für n, m = 5 betragen (Vektorgrafiken sind in Ordnung). Ein Bild mit n=6
und m=5
sieht ungefähr so aus:
Die Verzierung:
Farben:
Alle Leuchten haben eine der folgenden 6 RGB-Farben {255,0,0}
, {0,255,0}
, {0,0,255}
, {255,255,0}
, {0,255,255}
und {255,0,255}
.
Animation:
n
undm
werden als Eingabe für jedes vernünftige Format und in der von Ihnen gewünschten Reihenfolge verwendet- Das Bild ändert sich bei jedem
dt = 25 ms
. Abweichungen sind in Ordnung, wenn sie auf "äußere Faktoren" zurückzuführen sind, z. B. Einschränkungen im Interpreter, langsame Computer usw.- Wenn es nicht möglich ist , den Zeitschritt manuell einzustellen, wird der Standardzeitschritt akzeptiert.
- Alle Lichter leuchten rot (
{255,0,0}
) beit=0
. - Es besteht immer eine Wahrscheinlichkeit von 5%, dass das erste Licht (oben links) die Farbe ändert. Alle Farben (mit Ausnahme der aktuellen Farbe) sollten gleich wahrscheinlich sein.
Jedes Licht (außer dem ersten) erhält die Farbe des Lichts auf der linken Seite. Befindet sich das Licht ganz links, erhält es die Farbe des Lichts ganz rechts in der Zeile darüber. Die Lichter sind wie unten gezeigt nummeriert. Lichtnummer
k
erhält die Farbe der Lichtnummerk-1
.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Die Ausgabe sollte theoretisch für immer laufen (es sei denn, Ihre Sprache / Ihr Interpreter hat eine Einschränkung, die dies verhindert).
- Bitte geben Sie eine Probe von mindestens 5 Sekunden an, vorzugsweise mehr in der Antwort (dies ist eine Ermutigung, keine Voraussetzung). (Ein Link zu TIO oder ähnlichem ist natürlich auch in Ordnung: D)
- Rahmen, Achsen, Gitterlinien usw. werden akzeptiert.
6-mal-5
15-mal-30
r,g,y,b,
usw. sind in mehreren Sprachen kürzer.
drawnow
als ich dies in MATLAB implementiert habe, da das Ergebnis zu langsam war. Ich denke, die Antwort muss lauten: Wenn es sich um eine Entwurfsentscheidung handelt, bei der der Interpreter eine feste Mindestzeitauflösung von> = 25 ms hat, ist dies in Ordnung. Wenn dies auf eine schlechte / einfache Implementierung, einen überlasteten / langsamen Online-Interpreter usw. zurückzuführen ist, ist dies nicht in Ordnung.