[2021] solve day 7 python
This commit is contained in:
parent
41fa0a15e5
commit
123145c9b3
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue