This commit is contained in:
parent
4284b50891
commit
0da12c07f6
3 changed files with 165 additions and 0 deletions
45
14/14.py
Executable file
45
14/14.py
Executable file
|
@ -0,0 +1,45 @@
|
||||||
|
#!/usr/bin/env python
|
||||||
|
# 2021 - Advent Of Code - 14
|
||||||
|
|
||||||
|
from collections import Counter
|
||||||
|
|
||||||
|
|
||||||
|
def parse_file(file):
|
||||||
|
with open(file) as f:
|
||||||
|
poly_string = list(f.readline().strip())
|
||||||
|
f.readline()
|
||||||
|
insertion_rules = dict([line.strip().split(' -> ') for line in f.readlines()])
|
||||||
|
|
||||||
|
return poly_string, insertion_rules
|
||||||
|
|
||||||
|
|
||||||
|
def step_poly(poly_str, ruleset):
|
||||||
|
new_p = []
|
||||||
|
for i, p in enumerate(poly_str):
|
||||||
|
if i + 1 == len(poly_str):
|
||||||
|
break
|
||||||
|
new_p.append(p)
|
||||||
|
binome = '' + p + poly_str[i+1]
|
||||||
|
# print(f'binome {binome}')
|
||||||
|
found = ruleset.get(binome)
|
||||||
|
if found:
|
||||||
|
# print(f'found: {found}')
|
||||||
|
new_p.append(found)
|
||||||
|
|
||||||
|
new_p.append(p)
|
||||||
|
return ''.join(new_p)
|
||||||
|
|
||||||
|
|
||||||
|
# poly, rules = parse_file('input_example.txt')
|
||||||
|
poly, rules = parse_file('input.txt')
|
||||||
|
print(f'poly: {poly}')
|
||||||
|
print(f'rules: {rules}')
|
||||||
|
|
||||||
|
for s in range(10):
|
||||||
|
print(f'step: {s}')
|
||||||
|
poly = step_poly(poly, rules)
|
||||||
|
print(poly)
|
||||||
|
|
||||||
|
print(Counter(poly))
|
||||||
|
c = Counter(poly).most_common()[0][1] - Counter(poly).most_common()[-1][1]
|
||||||
|
print(c)
|
102
14/input.txt
Normal file
102
14/input.txt
Normal file
|
@ -0,0 +1,102 @@
|
||||||
|
BCHCKFFHSKPBSNVVKVSK
|
||||||
|
|
||||||
|
OV -> V
|
||||||
|
CO -> V
|
||||||
|
CS -> O
|
||||||
|
NP -> H
|
||||||
|
HH -> P
|
||||||
|
KO -> F
|
||||||
|
VO -> B
|
||||||
|
SP -> O
|
||||||
|
CB -> N
|
||||||
|
SB -> F
|
||||||
|
CF -> S
|
||||||
|
KS -> P
|
||||||
|
OH -> H
|
||||||
|
NN -> O
|
||||||
|
SF -> K
|
||||||
|
FH -> F
|
||||||
|
VV -> B
|
||||||
|
VH -> O
|
||||||
|
BV -> V
|
||||||
|
KF -> K
|
||||||
|
CC -> F
|
||||||
|
NF -> H
|
||||||
|
VS -> O
|
||||||
|
SK -> K
|
||||||
|
HV -> O
|
||||||
|
CK -> K
|
||||||
|
VP -> F
|
||||||
|
HP -> S
|
||||||
|
CN -> K
|
||||||
|
OB -> H
|
||||||
|
NS -> F
|
||||||
|
PS -> S
|
||||||
|
KB -> S
|
||||||
|
VF -> S
|
||||||
|
FP -> H
|
||||||
|
BB -> N
|
||||||
|
HF -> V
|
||||||
|
CH -> N
|
||||||
|
BH -> F
|
||||||
|
KK -> B
|
||||||
|
OO -> N
|
||||||
|
NO -> K
|
||||||
|
BP -> K
|
||||||
|
KH -> P
|
||||||
|
KN -> P
|
||||||
|
OF -> B
|
||||||
|
VC -> F
|
||||||
|
NK -> F
|
||||||
|
ON -> O
|
||||||
|
OC -> P
|
||||||
|
VK -> O
|
||||||
|
SH -> C
|
||||||
|
NH -> C
|
||||||
|
FB -> B
|
||||||
|
FC -> K
|
||||||
|
OP -> O
|
||||||
|
PV -> V
|
||||||
|
BN -> V
|
||||||
|
PC -> K
|
||||||
|
PK -> S
|
||||||
|
FF -> C
|
||||||
|
SV -> S
|
||||||
|
HK -> H
|
||||||
|
NB -> C
|
||||||
|
OK -> C
|
||||||
|
PH -> B
|
||||||
|
SO -> O
|
||||||
|
PP -> F
|
||||||
|
KV -> V
|
||||||
|
FO -> B
|
||||||
|
FN -> H
|
||||||
|
HN -> C
|
||||||
|
VB -> K
|
||||||
|
CV -> O
|
||||||
|
BC -> C
|
||||||
|
CP -> S
|
||||||
|
FS -> S
|
||||||
|
KP -> V
|
||||||
|
BS -> V
|
||||||
|
BK -> B
|
||||||
|
PN -> C
|
||||||
|
PF -> S
|
||||||
|
HO -> V
|
||||||
|
NC -> N
|
||||||
|
SS -> N
|
||||||
|
BO -> P
|
||||||
|
BF -> N
|
||||||
|
NV -> P
|
||||||
|
PB -> K
|
||||||
|
HB -> H
|
||||||
|
VN -> H
|
||||||
|
FV -> B
|
||||||
|
FK -> K
|
||||||
|
PO -> S
|
||||||
|
SC -> S
|
||||||
|
HS -> S
|
||||||
|
KC -> F
|
||||||
|
HC -> S
|
||||||
|
OS -> K
|
||||||
|
SN -> N
|
18
14/input_example.txt
Normal file
18
14/input_example.txt
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
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
|
Loading…
Reference in a new issue