Tasks 01-14

This commit is contained in:
2021-12-14 21:06:45 +03:00
parent d8eee6a69d
commit 1c9a6c0a96
29 changed files with 7033 additions and 0 deletions
+53
View File
@@ -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())))
+102
View File
@@ -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
View File