diff --git a/2021/day18/main.go b/2021/day18/main.go index efb970b..72d2d6d 100644 --- a/2021/day18/main.go +++ b/2021/day18/main.go @@ -9,6 +9,7 @@ import ( func main() { lines := aoc.Input().ReadLines("day18.txt") fmt.Println(part1(lines)) + fmt.Println(part2(lines)) } func part1(lines []string) int { @@ -25,6 +26,31 @@ func part1(lines []string) int { return n.Magnitude() } +func part2(lines []string) int { + var pairs [][2]string + for i := 0; i < len(lines)-1; i++ { + for j := i + 1; j < len(lines); j++ { + pairs = append(pairs, + [2]string{lines[i], lines[j]}, + [2]string{lines[j], lines[i]}, + ) + } + } + + max := 0 + for _, p := range pairs { + a, b := Tree(p[0]), Tree(p[1]) + n := add(a, b) + for n.Reduce() { + } + m := n.Magnitude() + if m > max { + max = m + } + } + return max +} + func add(a, b *Node) *Node { n := Pair(a, b) link(a.B().Right(), b.A().Left())