假设我有一个10x10单元板。每个单元格的索引从1到100(基于1的索引)。董事会是一个单元格列表:[1, 2, 3, ..., 100]
。在NxN板中找到与给定索引相邻的所有索引
任务。给定一个单元格的索引,找到覆盖它的所有单元格。
例如:
1 | 2 | 3 | 4
_____________
5 | 6 | 7 | 8
_____________
9 |10 |11 |12
_____________
13|14 |15 |16
鉴于指数:11
返回:[6, 7, 8, 12, 16, 15, 14, 10]
,顺序是不是一个问题。
我对这个解决方案:
def allAdjacentCell(given_index):
result = []
dimension = 4 # length of a line
if (1 <= given_index - dimension <= 16):
result.append(given_index - 1) # the cell above the given cell
if (1 <= given_index + dimension <= 16):
# below given index
if (1 <= given_index - 1 <= 16):
# ...
if (1 <= given_index + 1 <= 16):
# ...
# check for diagonal cells
return result
如果给定的小区在某处板的中心,我的方法似乎返回正确的结果。但是,如果给定的单元位于角落或边缘,那就错了。例如,如果给定单元格= 5,那么该方法将包括位于索引4的单元格,但它不与5相邻。
解决此问题的正确方法是什么?
您的董事会如何代表?一个单子?列表清单? –
是的,它是一个单一的列表。我将它列入问题中,非常感谢。 –
这被称为摩尔邻里。 –