diff --git a/day09/part1.min.py b/day09/part1.min.py new file mode 100644 index 0000000..f98c9ce --- /dev/null +++ b/day09/part1.min.py @@ -0,0 +1,2 @@ +#!/usr/bin/env python3 +import numpy as p;import scipy.ndimage as i;a=p.array([[int(n)for n in line.strip()]for line in open("input.txt")]);n=i.generate_binary_structure(len(a.shape),1);print(sum(a[p.where((i.minimum_filter(a,footprint=n)==a)*~(i.maximum_filter(a,footprint=n)==a))]+1)) diff --git a/day09/part1.py b/day09/part1.py index 7253b5f..a551335 100644 --- a/day09/part1.py +++ b/day09/part1.py @@ -9,8 +9,8 @@ arr = np.array([[int(n) for n in line.strip()] for line in open("input.txt")]) # https://stackoverflow.com/questions/3986345/how-to-find-the-local-minima-of-a-smooth-multidimensional-array-in-numpy-efficie neighborhood = morphology.generate_binary_structure(len(arr.shape), 1) -local_min = (filters.minimum_filter(arr, footprint=neighborhood) == arr) -local_max = (filters.maximum_filter(arr, footprint=neighborhood) == arr) +local_min = filters.minimum_filter(arr, footprint=neighborhood) == arr +local_max = filters.maximum_filter(arr, footprint=neighborhood) == arr local_min_without_plateau = np.logical_and(local_min, np.logical_not(local_max)) local_min_locations = np.where(local_min_without_plateau) local_min_values = arr[local_min_locations]