Suponha que definamos uma matriz infinita M
, on N^2 -> {0, 1}
(de onde N
começa em 1
vez de 0
) desta maneira:
M(1, 1)
=0
.Para todo
x > 1
,M(x, 1)
=1
sex
é primo e0
caso contrário.Para todos
y > 1
,M(1, y)
= oy
th termo noThue-Morse sequence
.Para cada
x, y > 1
,M(x, y)
=M(x, y-1) + M(x-1, y) mod 2
.
A 16x16
seção superior esquerda desta matriz se parece (com x
linhas e y
colunas):
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
Sua tarefa é criar um programa que avalie o valor de uma entrada arbitrária nessa matriz com a maior precisão possível.
Seu programa terá dois números inteiros x
e, y
como entrada, em qualquer forma que você escolher, e retornará M(x, y)
, que será um 0
ou 1
.
Seu código pode ser escrito em qualquer idioma, mas não deve exceder 64 kilobytes (65.536 bytes) de tamanho de código-fonte ou 2 MB (2.097.152 bytes) de uso total de memória. Seu programa deve iniciar com memória vazia (ou seja, não pode carregar dados de outro lugar) e executar independentemente para cada entrada (ou seja, pode não armazenar dados comuns para várias execuções). Seu programa também deve poder avaliar todas as entradas no 8192x8192
quadrado superior esquerdo em um período de tempo razoável.
O programa que avaliar mais entradas corretamente no 8192 x 8192
quadrado superior esquerdo será o vencedor, com um código mais curto atuando como desempate.