Solve 2024 day 10
This commit is contained in:
36
2024/d10.py
Normal file
36
2024/d10.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from collections import deque
|
||||
from lib import Grid2D
|
||||
from lib import get_data
|
||||
|
||||
|
||||
data = get_data(__file__)
|
||||
g = Grid2D(data)
|
||||
starts = g.find("0")
|
||||
p1, p2 = 0, 0
|
||||
for start in starts:
|
||||
n = 0
|
||||
vertex = ((start,), start)
|
||||
visited = set()
|
||||
queue = deque([vertex])
|
||||
nines = set()
|
||||
|
||||
while queue:
|
||||
path, pos = queue.popleft()
|
||||
if (path, pos) in visited:
|
||||
continue
|
||||
visited.add((path, pos))
|
||||
|
||||
if g[pos] == "9":
|
||||
n += 1
|
||||
nines.add(pos)
|
||||
continue
|
||||
|
||||
for nb in g.neighbors_ort(pos):
|
||||
if int(g[pos]) + 1 == int(g[nb]):
|
||||
npath = tuple(list(path) + [nb])
|
||||
queue.append((npath, nb))
|
||||
p1 += len(nines)
|
||||
p2 += n
|
||||
|
||||
print(p1)
|
||||
print(p2)
|
||||
Reference in New Issue
Block a user