Załóżmy, że definiujemy macierz nieskończoną M
na N^2 -> {0, 1}
(gdzie N
zaczyna się 1
zamiast 0
) w następujący sposób:
M(1, 1)
=0
.Dla każdego
x > 1
,M(x, 1)
=1
jeślix
jest pierwsza, a0
inaczej.Dla każdego
y > 1
,M(1, y)
=y
th termin wThue-Morse sequence
.Dla każdego
x, y > 1
,M(x, y)
=M(x, y-1) + M(x-1, y) mod 2
.
16x16
Wygląda górna lewa sekcja tej macierzy (z x
wierszami i y
kolumnami):
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 x
i y
jako dane wejściowe, w dowolnej formie, którą wybierzesz, i zwróci M(x, y)
, która będzie albo 0
albo 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 8192x8192
w rozsądnym czasie.
Zwycięzcą zostanie program, który poprawnie oceni najwięcej wpisów w lewym górnym 8192 x 8192
kwadracie, a krótszy kod będzie działał jako rozstrzygający.