Supposons que nous définissions une matrice infinie M, sur N^2 -> {0, 1}(où Ncommence à la 1place de 0) de cette manière:
M(1, 1)=0.Pour tout
x > 1,M(x, 1)=1ifxest premier, et0sinon.Pour chaque
y > 1,M(1, y)= leye terme duThue-Morse sequence.Pour chaque
x, y > 1,M(x, y)=M(x, y-1) + M(x-1, y) mod 2.
La section en haut à gauche 16x16de cette matrice ressemble (avec des xlignes et des ycolonnes):
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
Votre tâche consiste à créer un programme qui évaluera la valeur d'une entrée arbitraire dans cette matrice aussi précisément que possible.
Votre programme prendra deux entiers xet yen entrée, sous la forme que vous choisirez, et retournera M(x, y), qui sera soit 0ou 1.
Votre code peut être écrit dans n'importe quelle langue, mais ne doit pas dépasser 64 kilo-octets (65 536 octets) de taille de code source ou 2 Mo (2 097 152 octets) d'utilisation totale de la mémoire. Votre programme doit démarrer avec une mémoire vide (c'est-à-dire qu'il ne peut pas charger de données ailleurs) et s'exécuter indépendamment pour chaque entrée (c'est-à-dire qu'il ne peut pas stocker de données communes pour plusieurs exécutions). Votre programme doit également être en mesure d'évaluer toutes les entrées du 8192x8192carré supérieur gauche dans un délai raisonnable.
Le programme qui évalue correctement le plus d'entrées dans le 8192 x 8192carré supérieur gauche sera le gagnant, avec un code plus court faisant office de bris d'égalité.