aoc-2024/src/day_10/part_1.py

41 lines
1010 B
Python

def main():
grid = [ [ int(c) for c in line.strip() ] for line in open('inputs/10.txt') ]
WIDTH = len(grid[0])
HEIGHT = len(grid)
total = 0
# print(WIDTH, HEIGHT)
for y, line in enumerate(grid):
for x, c in enumerate(line):
if c == 0:
s = set()
s.add(( x, y ))
total += search(0, s, grid)
print(f"Day 10 part 1: {total}")
def search(level, items, grid) -> int:
if level == 9:
return len(items)
s = set()
new_level = level + 1
for x, y in items:
if x - 1 >= 0 and grid[y][x - 1] == new_level:
s.add(( x-1, y ))
if x + 1 < len(grid[0]) and grid[y][x + 1] == new_level:
s.add(( x+1, y ))
if y - 1 >= 0 and grid[y-1][x] == new_level:
s.add(( x, y-1 ))
if y + 1 < len(grid) and grid[y+1][x] == new_level:
s.add(( x, y+1 ))
return search(new_level, s, grid)
# if __name__ == '__main__':
main()