Giả sử chúng ta xác định một ma trận vô hạn M, bật N^2 -> {0, 1}(nơi Nbắt đầu từ 1thay vì 0) theo cách này:
M(1, 1)=0.Với mọi
x > 1,M(x, 1)=1nếuxlà số nguyên tố, và0nếu không.Với mọi
y > 1,M(1, y)= số hạngythứ trongThue-Morse sequence.Với mọi
x, y > 1,M(x, y)=M(x, y-1) + M(x-1, y) mod 2.
Phần trên cùng bên trái 16x16của ma trận này trông giống như (với xcác hàng và ylà các cột):
0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0
1 0 1 1 0 0 0 1 0 0 0 1 1 0 1 1
1 1 0 1 1 1 1 0 0 0 0 1 0 0 1 0
0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1
1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 1
0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1
1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1
0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1
0 1 0 1 0 1 1 1 1 1 0 0 0 0 0 1
0 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0
1 0 1 1 1 0 0 1 1 0 1 0 1 0 1 1
0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1
1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0
0 1 1 1 0 0 1 0 0 1 0 1 1 0 1 1
0 1 0 1 1 1 0 0 0 1 1 0 1 1 0 1
0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 1
Nhiệm vụ của bạn là xây dựng một chương trình sẽ đánh giá giá trị của một mục tùy ý trong ma trận này càng chính xác càng tốt.
Chương trình của bạn sẽ lấy hai số nguyên xvà ylàm đầu vào, dưới bất kỳ hình thức nào bạn chọn và trả về M(x, y), sẽ là một 0hoặc 1.
Mã của bạn có thể được viết bằng bất kỳ ngôn ngữ nào, nhưng không được vượt quá 64 kilobyte (65.536 byte) kích thước mã nguồn hoặc 2 MB (2.097.152 byte) trong tổng mức sử dụng bộ nhớ. Chương trình của bạn phải bắt đầu với bộ nhớ trống (nghĩa là nó không thể tải dữ liệu từ nơi khác) và chạy độc lập cho mỗi đầu vào (nghĩa là nó có thể không lưu trữ dữ liệu chung cho nhiều lần chạy). Chương trình của bạn cũng phải có khả năng đánh giá tất cả các mục trong 8192x8192ô vuông trên cùng bên trái trong một khoảng thời gian hợp lý.
Chương trình đánh giá hầu hết các mục chính xác trong 8192 x 8192ô vuông trên cùng bên trái sẽ là người chiến thắng, với mã ngắn hơn đóng vai trò là người phá vỡ.