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