My attempts to work through the 2021 Advent of Code problems.

day18_part2.py (1179B)

```      1 #!/usr/bin/env python
2 """Advent of Code 2021, day 18 (part 2): Snailfish math
3 Snilfish math!"""
4
5
6 from typing import List
7 from itertools import permutations
8 from day18_part1 import (EXAMPLE_INPUT,
9                          MathNode,
10                          parse_input,
12                          find_magnitude)
13 from utils import get_puzzle_input
14
15 def find_pairwise_sums(input_nodes: List[MathNode]) -> List[int]:
16     """Find the list of every pair of nodes in the list (in both orderings)"""
17     pairwise_sums = []
18     for node_1, node_2 in permutations(input_nodes, 2):
19         pairwise_sums.append(
20             find_magnitude(
22             )
23         )
24     return pairwise_sums
25
26 def solve_puzzle(input_string: str) -> int:
27     """Return the numeric solution to the puzzle"""
28     return max(find_pairwise_sums(parse_input(input_string)))
29
30 def main() -> None:
31     """Run when the file is called as a script"""
32     assert solve_puzzle(EXAMPLE_INPUT) == 3993
33     print("Magnitude of the highest possible sum of pairs:",
34           solve_puzzle(get_puzzle_input(18)))
35
36 if __name__ == "__main__":
37     main()
```