0
我想获得一个n维空间中的单元格的邻居,类似8-connected或26连接的单元格,但在任何维度提供了n元组。查找n维邻居
直接相邻的邻居很容易,在任何维度上都只有+ 1/-1。我有困难的部分是对角线,哪里可以通过1
我写复发每个子尺寸的函数具有不同的坐标的任何量,并且生成所有+/-组合:
def point_neighbors_recursive(point):
neighbors = []
# 1-dimension
if len(point) == 1:
neighbors.append([point[0] - 1]) # left
neighbors.append([point[0]]) # current
neighbors.append([point[0] + 1]) # right
return neighbors
# n-dimensional
for sub_dimension in point_neighbors_recursion(point[1:]):
neighbors.append([point[0] - 1] + sub_dimension) # left
neighbors.append([point[0]] + sub_dimension) # center
neighbors.append([point[0] + 1] + sub_dimension) # right
return neighbors
但是这会返回很多冗余的邻居。 有没有更好的解决方案?
你可以给出一个简单的例子,比如2D或3D的输出吗?当我在多个维度上尝试代码时,我会得到我期望的相邻点的集合:3 ^维(包括原始)。 – Prune