From a70226032b43af697bdab9418c487d3400155a9c Mon Sep 17 00:00:00 2001 From: Pascal Lais Date: Mon, 13 Dec 2021 08:54:11 +0100 Subject: [PATCH] Update day 12 solution Use deque instead of list --- day-12/day-12.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/day-12/day-12.py b/day-12/day-12.py index 603edbc..8e07024 100644 --- a/day-12/day-12.py +++ b/day-12/day-12.py @@ -1,11 +1,12 @@ #!/usr/bin/env python3 from pathlib import Path +from collections import deque def process_node(node, available_edges, visited): - paths = [] + paths = deque() if node == "end": - paths.append([node]) + paths.append(deque(node)) return paths if node.islower(): visited.add(node) @@ -13,16 +14,18 @@ def process_node(node, available_edges, visited): for n in neighbors: if n not in visited: nxt = process_node(n, available_edges, visited) - paths += [[node] + p for p in nxt] + for p in nxt: + p.appendleft(node) + paths.append(p) if node in visited: visited.remove(node) return paths def process_node_twice(node, available_edges, visited, visited_twice): - paths = [] + paths = deque() if node == "end": - paths.append([node]) + paths.append(deque(node)) return paths if node.islower(): if node in visited and visited_twice: @@ -35,7 +38,9 @@ def process_node_twice(node, available_edges, visited, visited_twice): for n in neighbors: 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] + for p in nxt: + p.appendleft(node) + paths.append(p) if visited_twice == node: visited_twice = None elif node in visited: