Python Создание рекурсивных объектов - PullRequest
2 голосов
/ 24 февраля 2020

Я пытаюсь оптимизировать алгоритм генерации лабиринта. На данный момент у меня есть список наборов узлов и список самих узлов. Узлы хранятся в виде (x, y) кортежей. В начале каждый набор содержит только один узел. Я выбираю случайную границу между двумя узлами и проверяю, находятся ли они в одном наборе. Вот проблема - я должен перебирать список наборов и просматривать каждый отдельный элемент, пока не найду набор, содержащий заданные узлы / узлы. Я хочу иметь доступ к наборам как к свойству класса Node, но я также хочу, чтобы мои наборы содержали объекты класса "Node", и я сталкиваюсь с этим:

class Node:

   def __init__(self, xy:tuple, group:set):
       self.xy = xy
       self.group = group

node = Node((10, 10),{Node(10, 10),{Node(10, 10),{... and so on }}})

Как мне создать такой отношение, так что я могу получить доступ к наборам как node.group и в то же время свойство group будет указывать на необходимый набор с другими объектами Node без рекурсии?

1 Ответ

1 голос
/ 24 февраля 2020

Это то, что вы хотели?

class Node:

    def __init__(self, xy:tuple):
        self.xy = xy
        self.group = None

    def set_group(self, group:set):
        if  self.group is not None:
            self.group.remove(self)
        group.add(self)
        self.group = group

node1 = Node((1,1))
node2 = Node((2,2))

group1 = set()
group2 = set()

node1.set_group(group1)
node2.set_group(group2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...