Zorluklarım biraz zor ve çekici olma eğilimindedir. İşte burada kolay ve eğlenceli bir şey.
Alcuin dizisi
Alcuin'in sırası A(n)
üçgenleri sayarak tanımlanır. A(n)
tamsayı kenarları ve çevresi olan üçgen sayısıdır n
. Bu sıraya York Alcuin denir.
Bu dizinin ilk birkaç öğesi, ile başlar n = 0
:
0, 0, 0, 1, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 4, 7, 5, 8, 7, 10, 8, ...
Örneğin A(9) = 3
, çünkü çevre tamsayı kenarları ve sadece üçgenler 9
vardır 1 - 4 - 4
, 3 - 3 - 3
ve 2 - 3 - 4
. Aşağıdaki 3 geçerli üçgeni görebilirsiniz.
Bu dizide oldukça ilginç bir desen var. Mesela A(2*k) = A(2*k - 3)
.
Daha fazla bilgi için, bkz. OEIS hakkında A005044 .
Meydan okuma
Ama senin zorluğun bu sayıların ikili temsili hakkında. Her sıra numarasını ikili gösterimine dönüştürürsek, sütun vektörlerine koyar ve sıralarsak, oldukça ilginç bir ikili resim oluşturur.
Aşağıdaki resimde sıra numaralarının ikili temsilini görebilirsiniz A(0), A(1), ..., A(149)
. İlk sütunda ikili temsili A(1)
, ikinci sütunda temsili A(1)
vb. Görebilirsiniz .
Bu resimde bir çeşit yinelenen desen görebilirsiniz. Örneğin sıra numaralarına sahip görüntüye bakarsanız, fraktallara benziyor A(600), A(601), ..., A(899)
.
İşiniz böyle bir görüntü oluşturmaktır. Fonksiyonunuz, betiğiniz iki tamsayı alacaktır 0 <= m < n
ve Alcuin'in dizisinin ikili görüntüsünü oluşturmak zorundadır A(m), A(m+1), A(m+2), ..., A(n-2), A(n-1)
. Böylece giriş 0, 150
ilk resmi, giriş 600, 900
ikinci resmi oluşturur.
İstediğiniz popüler grafik formatlarını kullanabilirsiniz. Diyelim ki image.online-convert.com kullanılarak png'ye dönüştürülebilen her format . Alternatif olarak, görüntüyü ekranda görüntüleyebilirsiniz. Önde gelen beyaz sıralara izin verilmez!
Bu kod golfü. Böylece en kısa kod (bayt cinsinden) kazanır.
white=1 and black=0
tersi mi?
white=0 and black=1
. Diğer yoldan. A(0)
beyaz sütun, A(9)=3
altta 2 siyah piksel olan beyaz bir sütun üretir.
0,0,0,1,0,2
sorunun başında liste diyor iken 0,0,0,1,0,1
.