advent-of-code/2025-python/output/day_07.py

51 lines
1 KiB
Python
Raw Normal View History

import functools
from output import grid
def solve(data):
G = grid(data, o="^")
p1 = set()
p2 = 0
H = len(data.split())
W = len(data.split()[0])
S = (0, data.split()[0].index("S"))
Q = [S]
while Q:
y, x = Q.pop(0)
if y == H:
continue
if (y, x) in p1:
continue
if (y, x) in G:
Q.append((y, x - 1))
Q.append((y, x + 1))
p1.add((y, x))
else:
Q.append((y + 1, x))
p1 = len(p1)
@functools.cache
def _timelines(p):
y, x = p
if not 0 <= y < H or not 0 <= x < W:
return 1
if p in G:
return _timelines((y, x - 1)) + _timelines((y, x + 1))
return _timelines((y + 1, x))
p2 = _timelines(S)
return p1, p2
if __name__ == "__main__":
with open("./input/07.txt", "r") as f:
inp = f.read().strip()
p1, p2 = solve(inp)
print(p1)
print(p2)
assert p1 == 1539
assert p2 == 6479180385864