From b9b5574179dcbb5f6d3fa0715905a047d1cd377e Mon Sep 17 00:00:00 2001 From: Brian Chu Date: Thu, 9 Dec 2021 00:28:53 -0800 Subject: solution for day 9 --- day9.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 day9.py diff --git a/day9.py b/day9.py new file mode 100644 index 0000000..d0f8b1f --- /dev/null +++ b/day9.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +import numpy as np +from scipy.ndimage import label + +with open("day9.txt") as data: + depthmap = [] + for line in data: + row = [int(num) for num in line.strip()] + depthmap.append(row) + depthmap = np.array(depthmap) + +# part 1 +# convolve across grid + +def conv_filter(position: (int, int)) -> int: + def neighbors(): + x, y = position + neighboring = {(x-1, y), (x+1, y), (x, y-1), (x, y+1)} + return {(xPos, yPos) for xPos, yPos in neighboring if 0 <= xPos <= depthmap.shape[0]-1 and 0 <= yPos <= depthmap.shape[1]-1} + + if all(depthmap[position] < depthmap[pos] for pos in neighbors()): + return depthmap[position] + 1 + else: + return 0 + +print(sum(conv_filter((x, y)) for x in range(depthmap.shape[0]) for y in range(depthmap.shape[1]))) + +# part 2 +basins, num_basins = label(depthmap != 9) +counts = [np.count_nonzero(basins == num) for num in range(1, num_basins + 1)] +counts.sort() +print(np.prod(counts[-3:])) -- cgit 1.4.1-2-gfad0