You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

49 lines
1.3 KiB

#!/usr/bin/env python3
import sys
from collections import Counter
from copy import deepcopy
def step(cons,s):
for _ in range(s):
ncons = {}
for (a,b),v in cons.items():
if (a, rules[a+b]) not in ncons: ncons[(a, rules[a+b])] = 0
if (rules[a+b], b) not in ncons: ncons[(rules[a+b], b)] = 0
ncons[(a, rules[a+b])] += v
ncons[(rules[a+b],b)] += v
cons = deepcopy(ncons)
return cons
def countp(cons):
ex = {}
for k in nex.keys():
ex[k[0]] = 0
ex[k[1]] = 0
ex[start[0]] += 1
ex[start[-1]] += 1
for k,v in nex.items():
ex[k[0]] += v
ex[k[1]] += v
return ex
if __name__ == '__main__':
start, rules = open(sys.argv[1]).read().split('\n\n')
rules = [r.split(' -> ') for r in rules.split('\n')]
rules = {a[0]:a[1] for a in rules[:-1]}
nex = {}
for a,b in zip(start[:-1],start[1:]):
if (a,b) not in nex: nex[(a,b)] = 0
nex[(a,b)] +=1
# challenge 1
nex = step(nex,10)
res = countp(nex)
res1 = str(max(res.values())//2-min(res.values())//2)
print("challenge 1:" +"\n" + res1 + "\n")
# challenge 2
nex = step(nex,30)
res = countp(nex)
res2 = str(max(res.values())//2-min(res.values())//2)
print("challenge 2:" +"\n" + res2 + "\n")