Я пробовал этот код, где я пытался поместить все в граф (список смежности/диктант), где каждый ключ является элементом кортежа, а затем я попытался упорядочить его в соответствии с условиями, которые я упоминал ранее, но он работает неправильно. С входными данными, подобными приведенным ранее
list = [(1, 3), (-6, 3), (1, 7)]
выход был
[(1, 3), (3, 7), (7, -6)]
вместо
[(7, 1 ),(1, 3), (3, -6)]
это код, который я использовал
Код: Выделить всё
def compoundGraph(compounds):
graph = {}
for tuple in compounds:
if tuple[0] in graph:
graph[tuple[0]].append(tuple[1])
else:
graph[tuple[0]] = [tuple[1]]
return graph
def traverse(graph, start, visited, result):
if start not in visited:
visited.add(start)
result.append(start)
if start in graph:
for neighbor in graph[start]:
traverse(graph, neighbor, visited, result)
def reorderCompounds(tuples_list):
graph = compoundGraph(tuples_list)
result = []
visited = set()
keys_copy = list(graph.keys())
for start in keys_copy:
traverse(graph, start, visited, result)
return [(result[i], result[i+1]) for i in range(len(result)-1)]
list = [(1, 3), (-6, 3), (1, 7)]
print(reorderCompounds(list))
Подробнее здесь: https://stackoverflow.com/questions/783 ... n-the-list