aoc

Advent of Code
git clone https://git.pngu.org/aoc
Log | Files | Refs | README

7_2025.py (825B)


from collections import deque
from functools import cache

input = open("data/7_2025.txt").read()
grid = [list(i) for i in input.splitlines()]
r, c = len(grid), len(grid[0])

for i in range(r):
    for j in range(c):
        if grid[i][j] == "S":
            sr, sc = i, j


@cache
def score(x, y):
    if x + 1 == r:
        return 1
    if grid[x + 1][y] == "^":
        return score(x + 1, y - 1) + score(x + 1, y + 1)
    else:
        return score(x + 1, y)


p1, vis = 0, set()
q = deque([(sr, sc)])
while q:
    x, y = q.popleft()
    if (x, y) in vis:
        continue
    vis.add((x, y))
    if x + 1 == r:
        continue
    if grid[x + 1][y] == "^":
        q.append((x + 1, y - 1))
        q.append((x + 1, y + 1))
        p1 += 1
    else:
        q.append((x + 1, y))

p2 = score(sr, sc)

print(p1)
print(p2)