commit 4a8670dc62efc98f30b853c6c4c3753bd83e3e1b
parent 04d38c9e24dc4c40c3668400ea86389961920c3f
Author: Eamon Caddigan <eamon.caddigan@gmail.com>
Date: Sat, 18 Dec 2021 20:42:35 -0500
Solution to day 18, part 2
Diffstat:
1 file changed, 37 insertions(+), 0 deletions(-)
diff --git a/day18_part2.py b/day18_part2.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+"""Advent of Code 2021, day 18 (part 2): Snailfish math
+Snilfish math!"""
+
+
+from typing import List
+from itertools import permutations
+from day18_part1 import (EXAMPLE_INPUT,
+ MathNode,
+ parse_input,
+ add_nodes,
+ find_magnitude)
+from utils import get_puzzle_input
+
+def find_pairwise_sums(input_nodes: List[MathNode]) -> List[int]:
+ """Find the list of every pair of nodes in the list (in both orderings)"""
+ pairwise_sums = []
+ for node_1, node_2 in permutations(input_nodes, 2):
+ pairwise_sums.append(
+ find_magnitude(
+ add_nodes(node_1, node_2)
+ )
+ )
+ return pairwise_sums
+
+def solve_puzzle(input_string: str) -> int:
+ """Return the numeric solution to the puzzle"""
+ return max(find_pairwise_sums(parse_input(input_string)))
+
+def main() -> None:
+ """Run when the file is called as a script"""
+ assert solve_puzzle(EXAMPLE_INPUT) == 3993
+ print("Magnitude of the highest possible sum of pairs:",
+ solve_puzzle(get_puzzle_input(18)))
+
+if __name__ == "__main__":
+ main()