Files
advent-of-code-2021/day-14/day-14.py
Pascal Lais 6136c92fd6
Some checks failed
continuous-integration/drone/push Build is failing
Update day 14 solution
Use collections.counter instead of collections.defaultdict
2021-12-14 10:56:18 +01:00

30 lines
912 B
Python

#!/usr/bin/env python3
from pathlib import Path
from collections import Counter
def solve(input, part, num_cycles):
result = 0
template = input[0].strip()
rules = {k: v
for line in input[2:] for k, v in [line.strip().split(' -> ')]}
counts = Counter([template[i: i + 2] for i in range(len(template - 1))])
char_counts = Counter(template)
for _ in range(num_cycles):
for k, c in counts.copy().items():
if k in rules:
counts[k] -= c
counts[k[0] + rules[k]] += c
counts[rules[k] + k[1]] += c
char_counts[rules[k]] += 1
result = char_counts.most_common(1)[1] - char_counts.most_common()[-1][1]
print("Part", part, "result:", result)
input = list()
p = Path(__file__).with_name('input.txt')
with open(p) as f:
input = f.readlines()
solve(input, 1, 10)
solve(input, 2, 40)