To wyzwanie jest na cześć tandetnych lampek choinkowych w moim domu prawniczym.
Wyzwanie polega na stworzeniu graficznego wyniku przedstawiającego dekorację w „czasie rzeczywistym”.
Wideo (gif lub inny format) będzie miało pionowe i poziome „światła” n-by-m . 5 <= m, n <= 40 . Wielkość ramy i rozdzielczości może zmieniać się w zależności od n i m , jednak musi być co najmniej 50x50 pikseli o n M = 5 (grafiki wektorowe jest OK). Obraz z n=6
i m=5
będzie wyglądał mniej więcej tak:
Dekoracja:
Zabarwienie:
Wszystkie światła będzie mieć jedną z następujących 6 kolorów RGB {255,0,0}
, {0,255,0}
, {0,0,255}
, {255,255,0}
, {0,255,255}
i {255,0,255}
.
Animacja:
n
im
będą pobierane jako dane wejściowe w dowolnym rozsądnym formacie i w dowolnej kolejności- Obraz zmieni się co
dt = 25 ms
. Odchylenia są OK, jeśli wynika to z „czynników zewnętrznych”, takich jak ograniczenie tłumacza, powolny komputer itp.- Jeśli niemożliwe jest ręczne ustawienie kroku czasu, wówczas domyślny krok czasu jest akceptowany.
- Wszystkie lampki będą świecić na czerwono (
{255,0,0}
) ot=0
. - Zawsze istnieje 5% szans, że pierwsze światło (u góry po lewej) zmieni kolor. Wszystkie kolory (oprócz koloru, który obecnie ma) powinny być jednakowo prawdopodobne.
Każde światło (oprócz pierwszego) otrzyma kolor światła po swojej lewej stronie. Jeśli światło znajduje się najdalej po lewej stronie, otrzyma kolor światła po prawej stronie w rzędzie powyżej. Światła są ponumerowane, jak pokazano poniżej. Jasna liczba
k
otrzyma kolor jasnej liczbyk-1
.1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Dane wyjściowe powinny teoretycznie działać wiecznie (chyba że Twój język / tłumacz ma jakieś ograniczenia, które temu zapobiegają).
- Podaj próbkę o długości co najmniej 5 sekund, najlepiej więcej w odpowiedzi (jest to zachęta, a nie wymóg). (Link do TIO lub podobnego jest oczywiście OK: D)
- Ramy, osie, linie siatki itp. Są akceptowane.
6 na 5
15 na 30
r,g,y,b,
itp. są krótsze w kilku językach.
drawnow
kiedy zaimplementowałem to w MATLAB, ponieważ wynik był zbyt wolny. Myślę, że odpowiedź musi być następująca: jeśli jest to wybór projektowy, że interpreter ma ustaloną minimalną rozdzielczość czasową> = 25 ms, to jest OK. Jeśli jest to spowodowane słabą / prostą implementacją, tłumaczem internetowym, który jest przeciążony / wolny itp., To nie jest OK.