coreylowman / AllYourTurtles

Halite 3 Bot
1 stars 1 forks source link

path planning connected components #18

Open coreylowman opened 5 years ago

coreylowman commented 5 years ago
connected_components = []
component_by_pos = {p: None for p in OBSTACLES}
unclaimed = positions - OBSTACLES
while len(unclaimed) > 0:
    open_set = {unclaimed.pop()}
    closed_set = set()
    component = len(connected_components)

    while len(open_set) > 0:
        current = open_set.pop()
        closed_set.add(current)
        component_by_pos[current] = component
        unclaimed.discard(current)

        for neighbor in cardinal_neighbors(current):
            if neighbor in OBSTACLES or neighbor in closed_set:
                continue
            open_set.add(neighbor)

    connected_components.append(closed_set)