Files
advent-of-code-2025/day7/part2.py
2025-12-12 21:10:13 -08:00

26 lines
815 B
Python

from pathlib import Path
FILE = "input.txt"
def main():
raw_lines = Path(FILE).read_text().splitlines()
position = raw_lines[0].index('S')
return traverse(position, raw_lines[1:], 0, dict())
def traverse(position: int, grid: list[str], level: int, memo: dict[tuple[int, int], int]) -> int:
if (position, level) in memo.keys():
return memo[(position, level)]
if not len(grid):
return 1
if grid[0][position] == '^':
memo[(position, level)] = (
traverse(position-1, grid[1:], level+1, memo) +
traverse(position+1, grid[1:], level+1, memo)
)
return memo[(position, level)]
memo[(position, level)] = traverse(position, grid[1:], level+1, memo)
return memo[(position, level)]
if __name__ == "__main__":
print(main())