#!/usr/bin/env python import re RE_INS = re.compile("(.*)\s+->\s+(.*)$") def iterate_polymer(polymer, rules): result = polymer[0] for i in range(0, len(polymer)-1): k = polymer[i:i+2] if k in rules.keys(): result = result + rules[k]+k[1] else: result = result+k[1] return result polymer = None rules = dict() with open("input01.txt","r") as f: polymer = f. readline().strip() for line in f: line = line.strip() if len(line) == 0: continue m = RE_INS.match(line) if not m: print(line) rules[m.group(1)] = m.group(2) for i in range(10): polymer = iterate_polymer(polymer, rules) count = [polymer.count(i) for i in set(polymer)] print(max(count) - min(count))