From bdc37214b398dc2128e18a039dc1a8dd5d232fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=F0=9F=90=99PiperYxzzy?= Date: Sat, 9 Dec 2023 09:37:32 +0200 Subject: [PATCH] AoC Day 9, Part 2 (Solved) --- 2023/09/code.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/2023/09/code.go b/2023/09/code.go index d85ac6e..c363bcc 100644 --- a/2023/09/code.go +++ b/2023/09/code.go @@ -31,19 +31,26 @@ func run(part2 bool, input string) any { } if part2 { - return "not implemented" + sumPrevs := 0 + for _, d := range data { + _, prev := extrapolate(d) + sumPrevs += prev + } + + return sumPrevs } // solve part 1 here sumNexts := 0 for _, d := range data { - sumNexts += getNext(d) + next, _ := extrapolate(d) + sumNexts += next } return sumNexts } -func getNext(data []int) int { +func extrapolate(data []int) (next int, prev int) { diffTriangle := make([][]int, 0) diffTriangle = append(diffTriangle, data) @@ -52,12 +59,12 @@ func getNext(data []int) int { //fmt.Printf("%v\n", diffTriangle[len(diffTriangle)-1]) } - add := 0 for i := len(diffTriangle) - 2; i >= 0; i -= 1 { - add += diffTriangle[i][len(diffTriangle[i])-1] + next += diffTriangle[i][len(diffTriangle[i])-1] + prev = diffTriangle[i][0] - prev } - return add + return next, prev } func getDiffs(data []int) []int {