Ho una lista di liste, qualcosa comeDeterminazione dei vicini della cella elenco bidimensionale
[[1, 2, 3,],[4, 5, 6,],[7, 8, 9]]
.
rappresentato graficamente come:
1 2 3
4 5 6
7 8 9
sto cercando un approccio elegante per controllare il valore dei vicini di una cella, in senso orizzontale, verticale e diagonale. Ad esempio, i vicini di [0] [2] sono [0] [1], [1] [1] e [1] [2] o i numeri 2, 5, 6.
Ora mi rendo conto che potrebbe fare solo un attacco di forza bruta controllando ogni valore a la:
[i-1][j]
[i][j-1]
[i-1][j-1]
[i+1][j]
[i][j+1]
[i+1][j+1]
[i+1][j-1]
[i-1][j+1]
Ma questo è facile, e ho pensato che posso imparare di più vedendo alcuni più eleganti approcci.
Vuoi ottenere gli indici oi valori? E vuoi una funzione che possa fare un accesso casuale su ogni indice o una funzione che restituisca una lista di coppie (val, neighbors_of_val)? - Ottenere gli indici è troppo semplice per una soluzione elegante, ma quello che vuoi veramente fare potrebbe essere più interessante –
O o - Ho lasciato deliberatamente questa domanda in modo abbastanza generale, così le persone non si sentirebbero costrette. –