From bf38cbdc69eabf45f2cae7777d53ae287c23cdfc Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Fri, 8 Dec 2023 21:41:05 -0800 Subject: [PATCH] 2023 Day 9 Part 2 --- 2023/day09.nim | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/2023/day09.nim b/2023/day09.nim index 965d55f..6226bd7 100644 --- a/2023/day09.nim +++ b/2023/day09.nim @@ -56,4 +56,26 @@ proc part1(): int = var hh = deduce(h) result.inc extrapolate(hh)[^1] +func extrapolateBack(hs: var Histories): seq[int] = + assert(hs[^1][0] == 0) + + var row = len(hs) - 1 + result.add 0 + hs[row].insert(0, 0) + + while row > 0: + let inferred = hs[row-1][0] - hs[row][0] + result.add inferred + hs[row-1].insert(inferred, 0) + dec row + +proc part2(): int = + let text = readFile("input/day09.txt") + var histories = parseHistories(text) + + for h in histories: + var hh = deduce(h) + result.inc extrapolateBack(hh)[^1] + echo part1() +echo part2()