Day 7
This commit is contained in:
parent
e344804319
commit
84aa2a01a1
32
2021/day7.py
Normal file
32
2021/day7.py
Normal file
|
@ -0,0 +1,32 @@
|
|||
import sys
|
||||
|
||||
|
||||
def main():
|
||||
lines = [line.rstrip() for line in sys.stdin]
|
||||
positions = list(map(int, lines[0].split(",")))
|
||||
solve(positions, lambda x, y: abs(x - y))
|
||||
solve(positions, lambda x, y: sum(range(abs(x - y) + 1)))
|
||||
|
||||
|
||||
def solve(positions, acc_f):
|
||||
a, b = min(positions), max(positions)
|
||||
while True:
|
||||
mid = (a + b) // 2
|
||||
conso = consume(positions, mid, acc_f)
|
||||
conso_up = consume(positions, mid + 1, acc_f)
|
||||
conso_down = consume(positions, mid - 1, acc_f)
|
||||
if conso < conso_up and conso < conso_down:
|
||||
break
|
||||
if conso_up < conso:
|
||||
a = mid
|
||||
else:
|
||||
b = mid
|
||||
print(conso)
|
||||
|
||||
|
||||
def consume(positions, toward, acc_f):
|
||||
return sum(acc_f(pos, toward) for pos in positions)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in a new issue