diff --git a/2021/Python/day07.py b/2021/Python/day07.py index fcc3471..28c6ccf 100644 --- a/2021/Python/day07.py +++ b/2021/Python/day07.py @@ -1,3 +1,6 @@ +import numpy as np + + def load() -> list[int]: with open('../.input/day07') as f: return [int(x) for x in f.readline().split(',')] @@ -8,5 +11,20 @@ def solve1() -> int: median = sorted(numbers)[len(numbers) // 2] return sum(abs(x - median) for x in numbers) + +def nth_sum(n: int) -> int: + return n * (n + 1) // 2 + + +def solve2() -> int: + numbers = np.array(load()) + search_vector = np.arange(0, max(numbers) + 1) + search_matrix = np.tile(search_vector, (len(numbers), 1)).T + distance = abs(search_matrix - numbers) + fuel_expended = nth_sum(distance) + return min(fuel_expended.sum(axis=1)) + + if __name__ == '__main__': print(solve1()) # 356179 + print(solve2()) # 99788435