diff --git a/day-12/day-12.py b/day-12/day-12.py index 78dbd24..121fa3e 100644 --- a/day-12/day-12.py +++ b/day-12/day-12.py @@ -12,34 +12,32 @@ def process_node(node, available_edges, visited): neighbors = [n for e in available_edges if node in e for n in e if n != node] for n in neighbors: if n not in visited: - next = process_node(n, available_edges, visited) - for p in next: - paths.append([node] + p) + nxt = process_node(n, available_edges, visited) + paths = [[node] + p for p in nxt] if node in visited: visited.remove(node) return paths -def process_node_twice(node, available_edges, visited, twice): +def process_node_twice(node, available_edges, visited, visited_twice): paths = [] if node == "end": paths.append([node]) return paths if node.islower(): - if node in visited and twice: + if node in visited and visited_twice: return paths elif node in visited and node != "start": - twice = node + visited_twice = node else: visited.add(node) neighbors = [n for e in available_edges if node in e for n in e if n != node] for n in neighbors: - if n not in visited or twice != node and n != "start": - next = process_node_twice(n, available_edges, visited, twice) - for p in next: - paths.append([node] + p) - if twice == node: - twice = None + if n not in visited or visited_twice != node and n != "start": + nxt = process_node_twice(n, available_edges, visited, visited_twice) + paths = [[node] + p for p in nxt] + if visited_twice == node: + visited_twice = None elif node in visited: visited.remove(node) return paths