diff options
Diffstat (limited to 'day14.py')
-rw-r--r-- | day14.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/day14.py b/day14.py new file mode 100644 index 0000000..f04d327 --- /dev/null +++ b/day14.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +from collections import defaultdict + +with open('day14.txt') as data: + template = next(data).strip() + next(data) + rules = {} + for line in data: + k, v = line.strip().split(' -> ') + rules[k] = v + +def polymerize(steps=10): + pairs = defaultdict(int) + for i in range(len(template) - 1): + pairs[template[i] + template[i+1]] += 1 + + for i in range(steps): + update = defaultdict(int) + for k, v in pairs.items(): + update[k[0] + rules[k]] += v + update[rules[k] + k[1]] += v + pairs = update + + counts = defaultdict(int) + for k, v in pairs.items(): + counts[k[0]] += v + return max(counts.values()) - min(counts.values()) - 1 + +print(polymerize()) +print(polymerize(40)) |