41 lines
1010 B
Python
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() |