あなたが cell にいるとします(i, j)
。次に、無限グリッドでは、隣人は になります[(i-1, j-1), (i-1,j), (i-1, j+1), (i, j-1), (i, j+1), (i+1, j-1), (i+1, j), (i+1, j+1)]
。
ただし、グリッドは有限であるため、上記の値の一部は範囲外になります。しかし、剰余算術は知っています:4 % 3 = 1
と-1 % 3 = 2
. したがって、グリッドのサイズが適切である場合は、上記のリストn, m
に適用するだけ%n, %m
で適切な隣接リストを取得できます。[((i-1) % n, (j-1) % m), ((i-1) % n,j), ((i-1) % n, (j+1) % m), (i, (j-1) % m), (i, (j+1) % m), ((i+1) % n, (j-1) % m), ((i+1) % n, j), ((i+1) % n, (j+1) % m)]
あなたの座標が と の間 と の間である場合、それはうまく0
いきます。から始める場合は、 aと a をどこかで実行して、上記を微調整する必要があります。n
0
m
1
-1
+1
あなたの場合n=m=4
と(i, j) = (0, 0)
. 最初のリストは[(-1, -1), (-1, 0), (-1, 1), (0, -1), (0, 1), (1, -1), (1, 0), (1, 1)]
. モジュラス演算を適用すると、写真で[(3, 3), (3, 0), (3, 1), (0, 3), (0, 1), (1, 3), (1, 0), (1, 1)]
マークされた正方形が正確になり[n]
ます。