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