From 123145c9b3a8012f93a7f1f8e5ca9d278f86575d Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Tue, 7 Dec 2021 12:31:44 +0100 Subject: [PATCH] [2021] solve day 7 python --- 2021/Python/day07.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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