[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]:
|
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
|
||||||
|
|
Loading…
Reference in a new issue