Il s'agit d'une technique pour encoder toutes les directions sous forme de tableaux - chaque paire de di[i],dj[i]
est une direction différente.
Si nous imaginons que nous avons une pièce à un emplacement x, y, et que nous voulons ajouter à sa valeur x et sa valeur y pour la déplacer vers un emplacement proche, 1,0 est l'est, -1,0 est l'ouest, 0,1 est le sud, 0, -1 est le nord et ainsi de suite.
(Ici, j'ai dit que le haut à gauche est 0,0 et le bas à droite est 4,4 et j'ai montré quel mouvement chaque index des tableaux fera à partir du point central, X, à 2,2.)
.....
.536.
.1X0.
.724.
.....
La façon dont il est configuré, si vous le faites ^1
(en ^
étant XOR au niveau du bit) sur l'index, vous obtenez la direction opposée - 0 et 1 sont opposés, 2 et 3 sont opposés et ainsi de suite. (Une autre façon de le configurer est d'aller dans le sens des aiguilles d'une montre en commençant par le nord - puis ^4
vous obtenez la direction opposée.)
Vous pouvez maintenant tester toutes les directions à partir d'un point donné en bouclant sur vos tableaux di
et dj
, au lieu d'avoir à écrire chaque direction sur sa propre ligne (pour huit au total!) (N'oubliez pas de vérifier les limites :))
diK
et djK
formez toutes les directions des chevaliers au lieu de toutes les directions adjacentes. Ici, ^1
retournera le long d'un axe, ^4
donnera le saut du chevalier opposé.
.7.6.
0...5
..K..
1...4
.2.3.
d={0,1,0,-1,0}
pour cela: des paires d'articles pourd[i], d[i+1]
me donner quatre directions cardinales.