La matrice di Wythoff è una matrice infinita composta dai numeri Grundy di ogni quadrato su una scacchiera nel gioco di Wythoff .
Ogni voce in questa matrice è uguale al numero non negativo più piccolo che non appare da nessuna parte sopra, a sinistra o diagonalmente a nord-ovest della posizione della voce.
Il quadrato 20 per 20 in alto a sinistra è simile al seguente:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
1 2 0 4 5 3 7 8 6 10 11 9 13 14 12 16 17 15 19 20
2 0 1 5 3 4 8 6 7 11 9 10 14 12 13 17 15 16 20 18
3 4 5 6 2 0 1 9 10 12 8 7 15 11 16 18 14 13 21 17
4 5 3 2 7 6 9 0 1 8 13 12 11 16 15 10 19 18 17 14
5 3 4 0 6 8 10 1 2 7 12 14 9 15 17 13 18 11 16 21
6 7 8 1 9 10 3 4 5 13 0 2 16 17 18 12 20 14 15 11
7 8 6 9 0 1 4 5 3 14 15 13 17 2 10 19 21 12 22 16
8 6 7 10 1 2 5 3 4 15 16 17 18 0 9 14 12 19 23 24
9 10 11 12 8 7 13 14 15 16 17 6 19 5 1 0 2 3 4 22
10 11 9 8 13 12 0 15 16 17 14 18 7 6 2 3 1 4 5 23
11 9 10 7 12 14 2 13 17 6 18 15 8 19 20 21 4 5 0 1
12 13 14 15 11 9 16 17 18 19 7 8 10 20 21 22 6 23 3 5
13 14 12 11 16 15 17 2 0 5 6 19 20 9 7 8 10 22 24 4
14 12 13 16 15 17 18 10 9 1 2 20 21 7 11 23 22 8 25 26
15 16 17 18 10 13 12 19 14 0 3 21 22 8 23 20 9 24 7 27
16 17 15 14 19 18 20 21 12 2 1 4 6 10 22 9 13 25 11 28
17 15 16 13 18 11 14 12 19 3 4 5 23 22 8 24 25 21 26 10
18 19 20 21 17 16 15 22 23 4 5 0 3 24 25 7 11 26 12 13
19 20 18 17 14 21 11 16 24 22 23 1 5 4 26 27 28 10 13 25
Al momento non esiste un algoritmo efficiente noto per calcolare una voce arbitraria nella matrice di Wythoff. Tuttavia, il tuo compito in questo problema è provare a progettare una funzione euristica che indichi se il numero in corrispondenza di una coordinata specifica wythoff(x, y)
è pari o dispari.
Il programma non può contenere più di 64 KB (65.536 byte) di codice sorgente o utilizzare più di 2 MB (2.097.152 byte) di memoria di lavoro.
In particolare per l'utilizzo della memoria, ciò significa che la dimensione massima impostata del residente del programma non può superare 2 MB in più rispetto alla dimensione massima impostata del residente di un programma vuoto in quella lingua. Nel caso di un linguaggio interpretato, sarebbe l'utilizzo della memoria dell'interprete / macchina virtuale stessa e, nel caso di un linguaggio compilato, sarebbe l'utilizzo della memoria di un programma che esegue il metodo principale e non fa nulla.
Il programma verrà testato sulla 10000 x 10000
matrice per i valori di riga in 20000 <= x <= 29999
e i valori di colonna in 20000 <= y <= 29999
.
Il punteggio del tuo programma è il tasso di precisione (numero di ipotesi corrette) raggiunto dal tuo programma, con un codice più breve che funge da tiebreaker.
01.R
è un 05AB1E che genera in modo casuale vero o falso. Sia 0 vero e 1 falso, il mio programma sarà teoricamente corretto ~ 50% delle volte. È una voce valida?