Tasks 01-14
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
import csv
|
||||
from collections import Counter, defaultdict
|
||||
template, rules = """
|
||||
NNCB
|
||||
|
||||
CH -> B
|
||||
HH -> N
|
||||
CB -> H
|
||||
NH -> C
|
||||
HB -> C
|
||||
HC -> B
|
||||
HN -> C
|
||||
NN -> C
|
||||
BH -> H
|
||||
NC -> B
|
||||
NB -> B
|
||||
BN -> B
|
||||
BB -> N
|
||||
BC -> B
|
||||
CC -> N
|
||||
CN -> C
|
||||
""".strip().split('\n\n')
|
||||
with open("input") as f:
|
||||
template, rules = f.read().strip().split('\n\n')
|
||||
rules = {k: v for k, v in (line.split(' -> ') for line in rules.split('\n'))}
|
||||
|
||||
def f(template):
|
||||
for _ in range(5):
|
||||
new_template = []
|
||||
for a, b in zip(template, template[1:]):
|
||||
if a+b in rules:
|
||||
new_template.append(a+rules[a+b])
|
||||
else:
|
||||
new_template.append(a)
|
||||
new_template.append(template[-1])
|
||||
new_template = ''.join(new_template)
|
||||
template = new_template
|
||||
return template
|
||||
|
||||
c = Counter(f(f(template)))
|
||||
print(max(c.values()) - min(c.values()))
|
||||
|
||||
class MyCounter(Counter):
|
||||
def __mul__(self, n):
|
||||
return MyCounter({k: v*n for k, v in self.items()})
|
||||
|
||||
d = MyCounter(zip(template, template[1:]))
|
||||
for _ in range(8):
|
||||
d = sum((MyCounter(zip(l:=f(''.join(x)), l[1:]))*v for x, v in d.items()), start=MyCounter())
|
||||
res = defaultdict(int)
|
||||
for (a, b), v in d.items():
|
||||
res[b] += v
|
||||
print((max(res.values()) - min(res.values())))
|
||||
@@ -0,0 +1,102 @@
|
||||
VPPHOPVVSFSVFOCOSBKF
|
||||
|
||||
CO -> B
|
||||
CV -> N
|
||||
HV -> H
|
||||
ON -> O
|
||||
FS -> F
|
||||
NS -> S
|
||||
VK -> C
|
||||
BV -> F
|
||||
SC -> N
|
||||
NV -> V
|
||||
NC -> F
|
||||
NH -> B
|
||||
BO -> K
|
||||
FC -> H
|
||||
NB -> H
|
||||
HO -> F
|
||||
SB -> N
|
||||
KP -> V
|
||||
OS -> C
|
||||
OB -> P
|
||||
SH -> N
|
||||
BC -> H
|
||||
CK -> H
|
||||
SO -> N
|
||||
SP -> P
|
||||
CF -> P
|
||||
KV -> F
|
||||
CS -> V
|
||||
FF -> P
|
||||
VS -> V
|
||||
CP -> S
|
||||
PH -> V
|
||||
OP -> K
|
||||
KH -> B
|
||||
FB -> S
|
||||
CN -> H
|
||||
KS -> P
|
||||
FN -> O
|
||||
PV -> O
|
||||
VC -> S
|
||||
HF -> N
|
||||
OC -> O
|
||||
PK -> V
|
||||
KC -> C
|
||||
HK -> C
|
||||
PO -> N
|
||||
OO -> S
|
||||
VH -> N
|
||||
CC -> K
|
||||
BP -> K
|
||||
HC -> K
|
||||
FV -> K
|
||||
KF -> V
|
||||
VF -> C
|
||||
HN -> S
|
||||
VP -> B
|
||||
HH -> O
|
||||
FO -> O
|
||||
PC -> N
|
||||
KK -> C
|
||||
PN -> P
|
||||
NN -> C
|
||||
FH -> N
|
||||
VV -> O
|
||||
OK -> V
|
||||
CB -> N
|
||||
SN -> H
|
||||
VO -> H
|
||||
BB -> C
|
||||
PB -> F
|
||||
NF -> P
|
||||
KO -> S
|
||||
PP -> K
|
||||
NO -> O
|
||||
SF -> N
|
||||
KN -> S
|
||||
PS -> O
|
||||
VN -> V
|
||||
SS -> N
|
||||
BF -> O
|
||||
HP -> H
|
||||
HS -> N
|
||||
BS -> S
|
||||
VB -> F
|
||||
PF -> K
|
||||
SV -> V
|
||||
BH -> P
|
||||
FP -> O
|
||||
CH -> P
|
||||
OH -> K
|
||||
OF -> F
|
||||
HB -> V
|
||||
FK -> V
|
||||
BN -> V
|
||||
SK -> F
|
||||
OV -> C
|
||||
NP -> S
|
||||
NK -> S
|
||||
BK -> C
|
||||
KB -> F
|
||||
Reference in New Issue
Block a user