Questa è una tecnica per codificare tutte le direzioni come array - ogni coppia di di[i],dj[i]
è una direzione diversa.
Se immaginiamo di avere un pezzo in una posizione x, y, e vogliamo aggiungere sulla sua x e il suo valore y per spostarlo in una posizione vicina, 1,0 è est, -1,0 è ovest , 0,1 è sud, 0, -1 è nord e così via.
(Qui ho detto alto a sinistra è 0,0 e sotto a destra è 4,4 e mostrato quale mossa ogni indice delle matrici farà dal punto centrale, X, a 2,2.)
.....
.536.
.1X0.
.724.
.....
Il modo in cui è impostato, se si fa ^1
(^
bit XOR bit nell'indice si ottiene la direzione opposta - 0 e 1 sono opposti, 2 e 3 sono opposti e così via. (Un altro modo per configurarlo è quello di andare in senso orario a partire da nord -. Allora ^4
si ottiene la direzione opposta)
Ora è possibile testare tutte le direzioni da un punto dato dal loop sulle vostre di
e dj
array, invece di aver bisogno di scrivere ogni direzione su una riga (per otto in totale!) (Basta non dimenticare di fare il controllo dei limiti :))
diK
e djK
Form knights directions invece di tutte le direzioni adiacenti. Qui, ^1
girerà lungo un asse, ^4
darà il salto opposto del cavaliere.
.7.6.
0...5
..K..
1...4
.2.3.
Io uso spesso 'd = {0,1,0, -1,0}' per questo: coppie di articoli per 'd [i], d [i + 1]' dammi quattro direzioni cardinali. – dasblinkenlight
Questa è una domanda sorprendentemente buona. ... Si può fare qualcosa per il titolo? –
Ho fatto la mia parte per il titolo/didascalia, ma sarebbe di grande aiuto se c'è un nome per questo gruppo di array. C'è? –