Предположим, мы определяем бесконечную матрицу 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квадрате, будет победителем, с более коротким кодом, действующим как тай-брейк.