假设您有一个 NxM 维矩阵。例如,一个 4x4 矩阵:
0 1 2 3
4 5 6 7
8 9 10 11
12 13 14 15
每个单元有八个相邻的单元。例如,单元格 5 的相邻单元格为:0,1,2,4,6,8,9,10。
0 1 2
4 5 6
8 9 10
但是相邻的单元格也可以通过环绕矩阵找到,所以单元格7的相邻单元格是2,3,0,5,4,10,11,8
2 3 | 0
6 7 | 4
10 11| 8
您可以类似地环绕顶部和底部。
如果您随机选择一个点 (p),是否有一种简单的方法可以找到所有八个相邻单元格的值?到目前为止,我想出了这个列表,其中 m 是矩阵的宽度(在我们的例子中是 4)。
adjacentcells = [p+1, p-1, p+m, p-m, p+m-1, p+m+1, p-m-1, p-m+1]
for value in adjacentcells:
if value < 0:
value = value + len(matrix)
if value >= len(matrix)
value = value % len(matrix)
adjacentlist.append(value)
但是,当您选择角落中的一个单元格时,这将返回 7 个正确的相邻值和一个错误的单元格。谁能指出我哪里出错了?
*出于复杂(愚蠢)的原因,我将矩阵存储为字符串,这就是为什么我可以执行 len(matrix) 并获得 16。