diff --git a/day10/sol.py b/day10/sol.py index 9439fdc..63a5331 100644 --- a/day10/sol.py +++ b/day10/sol.py @@ -1,5 +1,5 @@ import itertools -from collections import Counter +from collections import Counter, deque def read(file): return [line.strip() for line in file] @@ -18,20 +18,22 @@ def solve(file): c = get(x,y) if c == h: assert (x,y) not in done - queue.append((x,y)) + if (x,y) not in count: + queue.append((x,y)) count[x,y] += n trailheads = [(x,y) for x,y in points() if get(x,y) == '0'] + summits = [(x,y) for x,y in points() if get(x,y) == '9'] t1 = 0 t2 = 0 for p in trailheads: - queue = [p] + queue = deque([p]) done = set() count = Counter() count[p] = 1 while queue: - x,y = queue.pop(0) + x,y = queue.popleft() #print(x,y,queue) if (x,y) in done: continue @@ -44,8 +46,8 @@ def solve(file): visit(x-1,y,h,n) visit(x,y+1,h,n) visit(x,y-1,h,n) - for x,y in points(): - if get(x,y) == '9' and (x,y) in done: + for x,y in summits: + if (x,y) in done: t1 += 1 t2 += count[x,y]