Update day 14 solution
Some checks failed
continuous-integration/drone/push Build is failing

Use collections.counter instead of collections.defaultdict
This commit is contained in:
2021-12-14 10:56:18 +01:00
parent 9aaf38ea2c
commit 6136c92fd6

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env python3
from pathlib import Path
from collections import defaultdict
from collections import Counter
def solve(input, part, num_cycles):
@@ -8,23 +8,16 @@ def solve(input, part, num_cycles):
template = input[0].strip()
rules = {k: v
for line in input[2:] for k, v in [line.strip().split(' -> ')]}
counts = defaultdict(int)
for i in range(len(template) - 1):
counts[template[i: i + 2]] += 1
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 = defaultdict(int)
for k in counts:
char_counts[k[0]] += counts[k]
char_counts[k[1]] += counts[k]
char_counts[template[0]] += 1
char_counts[template[-1]] += 1
counts = [char_counts[k] // 2 for k in char_counts]
result = max(counts) - min(counts)
char_counts[rules[k]] += 1
result = char_counts.most_common(1)[1] - char_counts.most_common()[-1][1]
print("Part", part, "result:", result)