Załóżmy, że definiujemy macierz nieskończoną Mna N^2 -> {0, 1}(gdzie Nzaczyna się 1zamiast 0) w następujący sposób:
M(1, 1)=0.Dla każdego
x > 1,M(x, 1)=1jeślixjest pierwsza, a0inaczej.Dla każdego
y > 1,M(1, y)=yth termin wThue-Morse sequence.Dla każdego
x, y > 1,M(x, y)=M(x, y-1) + M(x-1, y) mod 2.
16x16Wygląda górna lewa sekcja tej macierzy (z xwierszami i ykolumnami):
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
Twoim zadaniem jest zbudowanie programu, który oszacuje wartość dowolnego wpisu w tej macierzy tak dokładnie, jak to możliwe.
Twój program weźmie dwie liczby całkowite xi yjako dane wejściowe, w dowolnej formie, którą wybierzesz, i zwróci M(x, y), która będzie albo 0albo 1.
Kod może być napisany w dowolnym języku, ale nie może przekraczać 64 kilobajtów (65 536 bajtów) rozmiaru kodu źródłowego lub 2 MB (2097152 bajtów) całkowitego zużycia pamięci. Twój program musi uruchomić się z pustą pamięcią (tzn. Nie może załadować danych z innego miejsca) i działać niezależnie dla każdego wejścia (tzn. Nie może przechowywać wspólnych danych dla wielu uruchomień). Twój program musi także być w stanie ocenić wszystkie wpisy w lewym górnym rogu 8192x8192w rozsądnym czasie.
Zwycięzcą zostanie program, który poprawnie oceni najwięcej wpisów w lewym górnym 8192 x 8192kwadracie, a krótszy kod będzie działał jako rozstrzygający.