Solve 2023:09 "Mirage Maintenance"

This commit is contained in:
Anders Englöf Ytterström 2023-12-09 16:34:08 +01:00
parent 540fa253da
commit 96c4c1383a

View 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