AoC Day 9, Part 2 (Solved)

This commit is contained in:
🐙PiperYxzzy
2023-12-09 09:37:32 +02:00
parent 2af23a63df
commit bdc37214b3

View File

@@ -31,19 +31,26 @@ func run(part2 bool, input string) any {
} }
if part2 { if part2 {
return "not implemented" sumPrevs := 0
for _, d := range data {
_, prev := extrapolate(d)
sumPrevs += prev
}
return sumPrevs
} }
// solve part 1 here // solve part 1 here
sumNexts := 0 sumNexts := 0
for _, d := range data { for _, d := range data {
sumNexts += getNext(d) next, _ := extrapolate(d)
sumNexts += next
} }
return sumNexts return sumNexts
} }
func getNext(data []int) int { func extrapolate(data []int) (next int, prev int) {
diffTriangle := make([][]int, 0) diffTriangle := make([][]int, 0)
diffTriangle = append(diffTriangle, data) diffTriangle = append(diffTriangle, data)
@@ -52,12 +59,12 @@ func getNext(data []int) int {
//fmt.Printf("%v\n", diffTriangle[len(diffTriangle)-1]) //fmt.Printf("%v\n", diffTriangle[len(diffTriangle)-1])
} }
add := 0
for i := len(diffTriangle) - 2; i >= 0; i -= 1 { 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 { func getDiffs(data []int) []int {