36 lines
698 B
Python
36 lines
698 B
Python
#!/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)) |