Esta es una técnica para codificar todas las direcciones como matrices: cada par di[i],dj[i]es una dirección diferente.
Si imaginamos que tenemos una pieza en una ubicación x, y, y queremos agregar a su xy su valor y para moverla a una ubicación cercana, 1,0 es este, -1,0 es oeste, 0,1 es el sur, 0, -1 es el norte y así sucesivamente.
(Aquí he dicho que la parte superior izquierda es 0,0 y la parte inferior derecha es 4,4 y se muestra qué movimiento hará cada índice de las matrices desde el punto central, X, en 2,2).
.....
.536.
.1X0.
.724.
.....
De la forma en que está configurado, si lo hace ^1( ^siendo XOR bit a bit) en el índice, obtiene la dirección opuesta: 0 y 1 son opuestos, 2 y 3 son opuestos, etc. (Otra forma de configurarlo es ir en el sentido de las agujas del reloj comenzando en el norte, luego ^4te lleva en la dirección opuesta).
Ahora puede probar todas las direcciones desde un punto dado haciendo un bucle sobre sus matrices diy dj, en lugar de tener que escribir cada dirección en su propia línea (¡para ocho en total!) (¡No olvide verificar los límites :))
diKy djKformar todas las direcciones de los caballeros en lugar de todas las direcciones adyacentes. Aquí, ^1girará a lo largo de un eje, ^4dará el salto de caballo opuesto.
.7.6.
0...5
..K..
1...4
.2.3.
d={0,1,0,-1,0}para esto: pares de elementos parad[i], d[i+1]darme cuatro direcciones cardinales.