2021 day9/python: add dirty solution
This commit is contained in:
parent
b259572265
commit
8775b26fe6
1 changed files with 50 additions and 0 deletions
50
2021/day9/dirty.py
Executable file
50
2021/day9/dirty.py
Executable file
|
@ -0,0 +1,50 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import itertools
|
||||||
|
|
||||||
|
def walk_up(grid, x_orig, y_orig):
|
||||||
|
rows = len(grid)
|
||||||
|
cols = len(grid[0])
|
||||||
|
current = grid[x_orig][y_orig]
|
||||||
|
points = set()
|
||||||
|
for dx in (-1, 0, +1):
|
||||||
|
for dy in (-1, 0, +1):
|
||||||
|
if (dx == 0) == (dy == 0):
|
||||||
|
continue
|
||||||
|
x = x_orig + dx
|
||||||
|
y = y_orig + dy
|
||||||
|
if 0 <= x < rows and 0 <= y < cols:
|
||||||
|
if current < grid[x][y] < 9:
|
||||||
|
points.add((x, y))
|
||||||
|
points |= walk_up(grid, x, y)
|
||||||
|
return points
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
inp = [[int(n) for n in i.strip()] for i in sys.stdin.readlines()]
|
||||||
|
|
||||||
|
rows = len(inp)
|
||||||
|
cols = len(inp[0])
|
||||||
|
acc = 0
|
||||||
|
sizes = []
|
||||||
|
for x, row in enumerate(inp):
|
||||||
|
for y, n in enumerate(row):
|
||||||
|
if y > 0 and row[y-1] <= n:
|
||||||
|
continue
|
||||||
|
if y < cols-1 and row[y+1] <= n:
|
||||||
|
continue
|
||||||
|
if x > 0 and inp[x-1][y] <= n:
|
||||||
|
continue
|
||||||
|
if x < rows-1 and inp[x+1][y] <= n:
|
||||||
|
continue
|
||||||
|
points = walk_up(inp, x, y)
|
||||||
|
points.add((x, y))
|
||||||
|
sizes.append(len(points))
|
||||||
|
acc += n + 1
|
||||||
|
sizes.sort()
|
||||||
|
print(acc)
|
||||||
|
acc2 = 1
|
||||||
|
for x in sizes[-3:]:
|
||||||
|
acc2 *= x
|
||||||
|
print(acc2)
|
Loading…
Reference in a new issue