Чтобы найти замкнутые контуры, мой текущий подход заключается в следующем: найдите, какие линии соединены (общая вершина), и сгруппируйте их, прежде чем упорядочивать каждую группу по часовой стрелке.
Давайте рассмотрим следующий пример (написанный на Python)
Код: Выделить всё
lines = {
"A": [(0, 0), (0, 1)], # A,B -- B,C
"B": [(0, 1), (1, 1)], # | |
"C": [(1, 1), (1, 0)], # | |
"D": [(1, 0), (0, 0)], # A,D -- C,D
"E": [(4, 4), (4, 5)], # E,F - F,G
"F": [(4, 5), (5, 5)], # | /
"G": [(5, 5), (4, 4)], # E,G
}
answer = ["ABCD", "EFG"]
Я попробовал простой циклический подход (теория графов) для решения этой проблемы. но возвращенные циклы включали гораздо больше, чем мне хотелось, используя вершины в приведенном выше примере, поэтому я пересмотрел свой подход к проблеме, в результате чего я задал этот вопрос.
Подробнее здесь: https://stackoverflow.com/questions/788 ... n-elements