Supponiamo di definire una matrice infinita M, su N^2 -> {0, 1}(da dove Ninizia 1invece che 0) in questo modo:
M(1, 1)=0.Per ogni
x > 1,M(x, 1)=1ifxè primo, e0altrimenti.Per ogni
y > 1,M(1, y)= ilyesimo termine inThue-Morse sequence.Per ogni
x, y > 1,M(x, y)=M(x, y-1) + M(x-1, y) mod 2.
La 16x16sezione in alto a sinistra di questa matrice assomiglia (con xessere righe ed yessere colonne):
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
Il tuo compito è costruire un programma che valuti il valore di una voce arbitraria in questa matrice nel modo più accurato possibile.
Il tuo programma prenderà due numeri interi xe ycome input, in qualsiasi forma tu scelga, e restituirà M(x, y), che sarà 0o 1.
Il codice può essere scritto in qualsiasi lingua, ma non deve superare 64 kilobyte (65.536 byte) di dimensioni del codice sorgente o 2 MB (2.097.152 byte) di utilizzo della memoria totale. Il programma deve iniziare con memoria vuota (ovvero non può caricare dati da qualche altra parte) ed essere eseguito in modo indipendente per ciascun input (ovvero, potrebbe non memorizzare dati comuni per più esecuzioni). Il programma deve inoltre essere in grado di valutare tutte le voci nel 8192x8192riquadro in alto a sinistra in un periodo di tempo ragionevole.
Il programma che valuterà correttamente la maggior parte delle voci nel 8192 x 8192riquadro in alto a sinistra sarà il vincitore, con un codice più breve che fungerà da pareggio.