]> git.friedersdorff.com Git - max/advent_of_code_2021.git/blob - 14_2.py
Try day 14
[max/advent_of_code_2021.git] / 14_2.py
1 """ Pair insertion """
2 import pprint
3 import collections
4
5 insertion_rules = {}
6
7 polymer_pairs = collections.defaultdict(int)
8
9 letter_count = collections.defaultdict(int)
10
11 with open("14_input.txt") as f:
12     polymer_template = f.readline().strip()
13     f.readline()
14
15     for line in f:
16         pair, insert = line.strip().split(" -> ")
17         insertion_rules[pair] = insert
18
19 for i in range(len(polymer_template) - 1):
20     pair = str(polymer_template[i:i+2])
21     polymer_pairs[str(polymer_template[i:i+2])] += 1
22
23 print(polymer_pairs)
24
25 for _ in range(40):
26     new_polymer_pairs = collections.defaultdict(int)
27     for pair, n in polymer_pairs.items():
28         insert = insertion_rules[pair]
29
30         new_polymer_pairs[f"{pair[0]}{insert}"] += n
31         new_polymer_pairs[f"{insert}{pair[0]}"] += n
32         letter_count[insert] += n
33
34     polymer_pairs = new_polymer_pairs
35
36 print(letter_count)
37 print(max(letter_count.values()) - min(letter_count.values()))