Moje wyzwania wydają się być trochę trudne i nieatrakcyjne. Więc tutaj coś łatwego i przyjemnego.
Sekwencja Alcuina
Sekwencja Alcuina A(n)
jest definiowana przez zliczanie trójkątów. A(n)
to liczba trójkątów o bokach i obwodzie całkowitym n
. Ta sekwencja nosi nazwę Alcuin of York.
Pierwsze kilka elementów tej sekwencji, zaczynając od n = 0
:
0, 0, 0, 1, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 4, 7, 5, 8, 7, 10, 8, ...
Na przykład A(9) = 3
, ponieważ jedynymi trójkątami z liczbami całkowitymi po bokach i obwodzie 9
są 1 - 4 - 4
, 3 - 3 - 3
i 2 - 3 - 4
. Poniżej widoczne są 3 prawidłowe trójkąty.
W tej sekwencji jest trochę interesujący wzór. Na przykład A(2*k) = A(2*k - 3)
.
Aby uzyskać więcej informacji, patrz A005044 w OEIS.
Wyzwanie
Ale twoje wyzwanie dotyczy binarnej reprezentacji tych liczb. Jeśli przekonwertujemy każdy numer sekwencji na jego reprezentację binarną, umieścimy je w wektorach kolumnowych i ustawimy w jednej linii, tworzy to całkiem interesujący obraz binarny.
Na poniższym obrazku widać binarną reprezentację numerów sekwencji A(0), A(1), ..., A(149)
. W pierwszej kolumnie można zobaczyć reprezentację binarną A(1)
, w drugiej kolumnie reprezentację A(1)
i tak dalej.
Na tym zdjęciu widać powtarzający się wzór. Wygląda nawet trochę jak fraktale, jeśli spojrzysz na przykład na obraz z numerami sekwencji A(600), A(601), ..., A(899)
.
Twoim zadaniem jest wygenerowanie takiego obrazu. Twoja funkcja, twój skrypt otrzyma dwie liczby całkowite 0 <= m < n
i musi wygenerować binarny obraz sekwencji Alcuina A(m), A(m+1), A(m+2), ..., A(n-2), A(n-1)
. Tak więc wejście 0, 150
generuje pierwszy obraz, wejście 600, 900
drugi obraz.
Możesz użyć dowolnego popularnego formatu graficznego. Powiedzmy, że każdy format, który można przekonwertować do formatu png za pomocą image.online-convert.com . Alternatywnie możesz wyświetlić obraz na ekranie. Żadne wiodące białe rzędy nie są dozwolone!
To jest golf golfowy. Tak więc wygrywa najkrótszy kod (w bajtach).
white=1 and black=0
na odwrót?
white=0 and black=1
. Więc w drugą stronę. A(0)
tworzy białą kolumnę, A(9)=3
tworzy białą kolumnę z 2 czarnymi pikselami na dole.
0,0,0,1,0,2
podczas gdy lista na początku pytania mówi 0,0,0,1,0,1
.