Solve 2023:09 "Mirage Maintenance"
This commit is contained in:
parent
540fa253da
commit
96c4c1383a
1 changed files with 39 additions and 0 deletions
39
2023-python/output/day_09.py
Normal file
39
2023-python/output/day_09.py
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
from output import answer, puzzleinput
|
||||
|
||||
n = 9
|
||||
title = "Mirage Maintenance"
|
||||
|
||||
|
||||
@answer(1, "OASIS report extrapolated values sum is {}")
|
||||
def part_1(data):
|
||||
lines = [[int(d) for d in line.split()] for line in data.splitlines()]
|
||||
return _solve(lines)
|
||||
|
||||
|
||||
@answer(2, "Using prepending, OASIS report extrapolated values sum is {}")
|
||||
def part_2(data):
|
||||
lines = [[int(d) for d in line.split()[::-1]] for line in data.splitlines()]
|
||||
return _solve(lines)
|
||||
|
||||
|
||||
def _solve(lines):
|
||||
vs = 0
|
||||
for l in lines:
|
||||
h = [l]
|
||||
while any(n != 0 for n in h[-1]):
|
||||
h.append([b - a for a, b in zip(h[-1], h[-1][1:])])
|
||||
h = h[::-1]
|
||||
for i in range(len(h)):
|
||||
h[i].append(0 if i == 0 else h[i - 1][-1] + h[i][-1])
|
||||
vs += h[-1][-1]
|
||||
return vs
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
inp = parse_input()
|
||||
|
||||
a = part_1(inp)
|
||||
b = part_2(inp)
|
||||
|
||||
assert a == 1702218515
|
||||
assert b == 925
|
||||
Loading…
Add table
Reference in a new issue