[2021] solve day 7 python

This commit is contained in:
Maciej Jur 2021-12-07 12:31:44 +01:00
parent 41fa0a15e5
commit 123145c9b3

View file

@ -1,3 +1,6 @@
import numpy as np
def load() -> list[int]: def load() -> list[int]:
with open('../.input/day07') as f: with open('../.input/day07') as f:
return [int(x) for x in f.readline().split(',')] return [int(x) for x in f.readline().split(',')]
@ -8,5 +11,20 @@ def solve1() -> int:
median = sorted(numbers)[len(numbers) // 2] median = sorted(numbers)[len(numbers) // 2]
return sum(abs(x - median) for x in numbers) 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__': if __name__ == '__main__':
print(solve1()) # 356179 print(solve1()) # 356179
print(solve2()) # 99788435