Предположим, мы определяем бесконечную матрицу M
на N^2 -> {0, 1}
(откуда N
начинается 1
вместо 0
) следующим образом:
M(1, 1)
=0
.Для каждого
x > 1
,M(x, 1)
=1
еслиx
простой, и в0
противном случае.Для каждого
y > 1
,M(1, y)
=y
й член вThue-Morse sequence
.Для каждого
x, y > 1
,M(x, y)
=M(x, y-1) + M(x-1, y) mod 2
.
Верхний левый 16x16
раздел этой матрицы выглядит следующим образом (со x
строками и со y
столбцами):
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
Ваша задача - построить программу, которая будет оценивать значение произвольной записи в этой матрице с максимально возможной точностью.
Ваша программа будет принимать два целых числа x
и в y
качестве входных данных, в любой выбранной вами форме, и возвращать M(x, y)
, что будет либо либо, 0
либо 1
.
Ваш код может быть написан на любом языке, но не должен превышать 64 килобайт (65 536 байт) размера исходного кода или 2 МБ (2 097 152 байт) общего использования памяти. Ваша программа должна начинаться с пустой памяти (то есть она не может загружать данные откуда-то еще) и запускаться независимо для каждого входа (то есть она может не хранить общие данные для нескольких запусков). Ваша программа также должна быть в состоянии оценить все записи в верхнем левом 8192x8192
квадрате за разумное время.
Программа, которая оценивает большинство записей правильно в верхнем левом 8192 x 8192
квадрате, будет победителем, с более коротким кодом, действующим как тай-брейк.