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 ^4
te lleva en la dirección opuesta).
Ahora puede probar todas las direcciones desde un punto dado haciendo un bucle sobre sus matrices di
y 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 :))
diK
y djK
formar todas las direcciones de los caballeros en lugar de todas las direcciones adyacentes. Aquí, ^1
girará a lo largo de un eje, ^4
dará 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.