我使用python 3
我有一个列表L,其中包含另一个列表,其中包含点(x,y)的累积:
L=[A, B, C, D ...]
A = [(1,1),(3,3),(4,5)...]
B=[(1,2),..(6,7)]
我想合并L中的所有列表,这些列表都有相邻的点。 如上所述:我们必须联合A,B,因为它们有一个相邻的点:(1)来自A,(1,2)来自B.并获得:L = [A + B,C,...]
我尝试过这样的代码:
if (x-1,y-1) in L[i] or (x-1,y) in L[i] or (x-1,y+1) in L[i] or (x,y-1) in L[i] or (x,y+1) in L[i] or (x+1,y-1) in L[i] or (x+1,y) in L[i] or (x+1,y+1) in L[i]:
但是我无法将所有列表都归结为L. 帮助
* 相邻点是点,它们之间的距离= 1,例如(1,1)和(1,2)。 (5,6)和(6,7)。 (8,7)和(7,7)
答案 0 :(得分:0)
这是我的算法问题:
def adjacent(list_1, list_2):
for elem_1 in list_1:
for elem_2 in list_2:
if abs(elem_1[0] - elem_2[0]) == 1 or\
abs(elem_1[1] - elem_2[1]) == 1:
return True
return False
def join_adjacent_points(L):
result = []
while len(L) > 0:
result.append(L[0])
L = L[1:]
i = 0
while i < len(L):
if adjacent(L[i], result[-1]):
result[-1] += L[i]
del L[i]
i = 0
i += 1
return result