Những thách thức của tôi có xu hướng hơi khó khăn và không hấp dẫn. Vì vậy, ở đây một cái gì đó dễ dàng và vui vẻ.
Trình tự của Alcuin
Trình tự của Alcuin A(n)
được xác định bằng cách đếm các hình tam giác. A(n)
là số lượng tam giác có cạnh nguyên và chu vi n
. Trình tự này được gọi sau Alcuin of York.
Một vài yếu tố đầu tiên của chuỗi này, bắt đầu bằng n = 0
:
0, 0, 0, 1, 0, 1, 1, 2, 1, 3, 2, 4, 3, 5, 4, 7, 5, 8, 7, 10, 8, ...
Chẳng hạn A(9) = 3
, vì các tam giác duy nhất có các cạnh nguyên và chu vi 9
là 1 - 4 - 4
, 3 - 3 - 3
và 2 - 3 - 4
. Bạn có thể thấy 3 hình tam giác hợp lệ dưới đây.
Có một số mô hình khá thú vị trong chuỗi này. Chẳng hạn A(2*k) = A(2*k - 3)
.
Để biết thêm thông tin, xem A005044 trên OEIS.
Thử thách
Nhưng thách thức của bạn là về đại diện nhị phân của những con số này. Nếu chúng ta chuyển đổi từng số thứ tự thành biểu diễn nhị phân của nó, đặt chúng vào các vectơ cột và sắp xếp chúng theo thứ tự, nó sẽ tạo ra một bức tranh nhị phân khá thú vị.
Trong hình dưới đây, bạn có thể thấy biểu diễn nhị phân của các số thứ tự A(0), A(1), ..., A(149)
. Trong cột đầu tiên, bạn có thể thấy biểu diễn nhị phân của A(1)
, trong cột thứ hai biểu diễn A(1)
, v.v.
Bạn có thể thấy một số kiểu lặp lại trong hình này. Nó thậm chí trông giống như fractals, nếu bạn tìm ví dụ ở hình ảnh với các số thứ tự A(600), A(601), ..., A(899)
.
Công việc của bạn là tạo ra một hình ảnh như vậy. Hàm của bạn, tập lệnh của bạn sẽ nhận được hai số nguyên 0 <= m < n
và nó phải tạo ra hình ảnh nhị phân của chuỗi Alcuin A(m), A(m+1), A(m+2), ..., A(n-2), A(n-1)
. Vì vậy, đầu vào 0, 150
tạo ra hình ảnh đầu tiên, đầu vào 600, 900
hình ảnh thứ hai.
Bạn có thể sử dụng bất kỳ định dạng đồ họa phổ biến nào bạn muốn. Giả sử mọi định dạng có thể được chuyển đổi sang png bằng image.online-convert.com . Ngoài ra, bạn có thể hiển thị hình ảnh trên màn hình. Không có hàng trắng hàng đầu được phép!
Đây là mã golf. Vì vậy, mã ngắn nhất (tính bằng byte) sẽ thắng.
white=1 and black=0
hay cách khác xung quanh?
white=0 and black=1
. Vì vậy, cách khác. A(0)
tạo một cột trắng, A(9)=3
tạo một cột trắng có 2 pixel đen ở phía dưới.
0,0,0,1,0,2
trong khi danh sách ở đầu câu hỏi nói 0,0,0,1,0,1
.