diff --git a/day-12/day-12.py b/day-12/day-12.py index 4ac07f6..70980d4 100644 --- a/day-12/day-12.py +++ b/day-12/day-12.py @@ -2,22 +2,22 @@ from pathlib import Path -def process_node(node, available_edges, visited): +def process_node(node, edges, visited): num_paths = 0 if node == "end": return 1 if node.islower(): visited.add(node) - neighbors = [n for e in available_edges if node in e for n in e if n != node] + neighbors = [n for e in edges if node in e for n in e if n != node] for n in neighbors: if n not in visited: - num_paths += process_node(n, available_edges, visited) + num_paths += process_node(n, edges, visited) if node in visited: visited.remove(node) return num_paths -def process_node_twice(node, available_edges, visited, visited_twice): +def process_node_twice(node, edges, visited, visited_twice): num_paths = 0 if node == "end": return 1 @@ -28,10 +28,10 @@ def process_node_twice(node, available_edges, visited, visited_twice): 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] + neighbors = [n for e in edges if node in e for n in e if n != node] for n in neighbors: if n not in visited or visited_twice != node and n != "start": - num_paths += process_node_twice(n, available_edges, visited, visited_twice) + num_paths += process_node_twice(n, edges, visited, visited_twice) if visited_twice == node: visited_twice = None elif node in visited: @@ -41,22 +41,22 @@ def process_node_twice(node, available_edges, visited, visited_twice): def part_1(input): result = 0 - edges = [] + edges = set() for line in input: n_start, n_end = line.strip().split('-') e = (n_start, n_end) - edges.append(e) + edges.add(e) result = process_node("start", edges, set()) print("Part 1 result:", result) def part_2(input): result = 0 - edges = [] + edges = set() for line in input: n_start, n_end = line.strip().split('-') e = (n_start, n_end) - edges.append(e) + edges.add(e) result = process_node_twice("start", edges, set(), None) print("Part 2 result:", result)