Day 14
This commit is contained in:
102
day14/input.txt
Normal file
102
day14/input.txt
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
PBFNVFFPCPCPFPHKBONB
|
||||||
|
|
||||||
|
KK -> S
|
||||||
|
FO -> B
|
||||||
|
PP -> O
|
||||||
|
HN -> S
|
||||||
|
CN -> H
|
||||||
|
VH -> P
|
||||||
|
BK -> B
|
||||||
|
VC -> N
|
||||||
|
CB -> H
|
||||||
|
OC -> K
|
||||||
|
BF -> P
|
||||||
|
FV -> K
|
||||||
|
SP -> F
|
||||||
|
OP -> K
|
||||||
|
SS -> B
|
||||||
|
NN -> O
|
||||||
|
CS -> K
|
||||||
|
CF -> K
|
||||||
|
FF -> S
|
||||||
|
SV -> P
|
||||||
|
OK -> S
|
||||||
|
CO -> F
|
||||||
|
OB -> K
|
||||||
|
BH -> B
|
||||||
|
HH -> S
|
||||||
|
VB -> V
|
||||||
|
KV -> H
|
||||||
|
CK -> V
|
||||||
|
NV -> N
|
||||||
|
SF -> V
|
||||||
|
PK -> H
|
||||||
|
PV -> N
|
||||||
|
FB -> O
|
||||||
|
BO -> K
|
||||||
|
FP -> N
|
||||||
|
OF -> N
|
||||||
|
FK -> O
|
||||||
|
VK -> V
|
||||||
|
NO -> V
|
||||||
|
NS -> C
|
||||||
|
KC -> S
|
||||||
|
VF -> V
|
||||||
|
BV -> N
|
||||||
|
CP -> K
|
||||||
|
PB -> V
|
||||||
|
CC -> S
|
||||||
|
NH -> B
|
||||||
|
CV -> P
|
||||||
|
SO -> V
|
||||||
|
NC -> O
|
||||||
|
HK -> K
|
||||||
|
SB -> H
|
||||||
|
OO -> V
|
||||||
|
HO -> P
|
||||||
|
PS -> B
|
||||||
|
BC -> P
|
||||||
|
KO -> C
|
||||||
|
KB -> C
|
||||||
|
VV -> F
|
||||||
|
BS -> F
|
||||||
|
HB -> B
|
||||||
|
KN -> S
|
||||||
|
FC -> C
|
||||||
|
SN -> S
|
||||||
|
HC -> O
|
||||||
|
HP -> F
|
||||||
|
BP -> V
|
||||||
|
ON -> K
|
||||||
|
BB -> K
|
||||||
|
KH -> O
|
||||||
|
NP -> H
|
||||||
|
KS -> N
|
||||||
|
SH -> K
|
||||||
|
VP -> O
|
||||||
|
PF -> O
|
||||||
|
HF -> S
|
||||||
|
BN -> S
|
||||||
|
NK -> C
|
||||||
|
FH -> O
|
||||||
|
CH -> B
|
||||||
|
KP -> B
|
||||||
|
FN -> K
|
||||||
|
OV -> P
|
||||||
|
VS -> K
|
||||||
|
OH -> V
|
||||||
|
PC -> F
|
||||||
|
VO -> H
|
||||||
|
SK -> S
|
||||||
|
PO -> O
|
||||||
|
KF -> N
|
||||||
|
NF -> V
|
||||||
|
NB -> C
|
||||||
|
PN -> O
|
||||||
|
FS -> C
|
||||||
|
PH -> F
|
||||||
|
VN -> S
|
||||||
|
OS -> V
|
||||||
|
HV -> H
|
||||||
|
HS -> B
|
||||||
|
SC -> C
|
||||||
32
day14/part1.py
Normal file
32
day14/part1.py
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import re
|
||||||
|
from collections import Counter
|
||||||
|
|
||||||
|
lines = (x.strip() for x in open("input.txt"))
|
||||||
|
first = next(lines)
|
||||||
|
|
||||||
|
combinations = Counter(first[a:a+2] for a in range(len(first)-1))
|
||||||
|
replacements = dict()
|
||||||
|
|
||||||
|
next(lines)
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
before, insert = re.match(r"([A-Z]{2}) -> ([A-Z])", line).groups()
|
||||||
|
replacements[before] = (before[0]+insert, insert+before[1])
|
||||||
|
|
||||||
|
for _ in range(10):
|
||||||
|
nxt = {}
|
||||||
|
for before, afters in replacements.items():
|
||||||
|
for after in afters:
|
||||||
|
add = combinations.get(before, 0) + nxt.get(after, 0)
|
||||||
|
if add:
|
||||||
|
nxt[after] = add
|
||||||
|
combinations = nxt
|
||||||
|
|
||||||
|
letters = {}
|
||||||
|
for key, cnt in combinations.items():
|
||||||
|
letters[key[0]] = letters.get(key[0], 0) + cnt
|
||||||
|
letters[key[1]] = letters.get(key[1], 0) + cnt
|
||||||
|
|
||||||
|
print(letters)
|
||||||
|
print((max(*letters.values())+1) // 2 - (min(*letters.values())+1) // 2)
|
||||||
34
day14/part2.py
Normal file
34
day14/part2.py
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import re
|
||||||
|
from collections import Counter
|
||||||
|
|
||||||
|
lines = (x.strip() for x in open("input.txt"))
|
||||||
|
first = next(lines)
|
||||||
|
|
||||||
|
combinations = Counter(first[a:a+2] for a in range(len(first)-1))
|
||||||
|
replacements = dict()
|
||||||
|
|
||||||
|
next(lines)
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
before, insert = re.match(r"([A-Z]{2}) -> ([A-Z])", line).groups()
|
||||||
|
replacements[before] = (before[0]+insert, insert+before[1])
|
||||||
|
print(combinations)
|
||||||
|
|
||||||
|
for _ in range(40):
|
||||||
|
nxt = {}
|
||||||
|
for before, afters in replacements.items():
|
||||||
|
for after in afters:
|
||||||
|
add = combinations.get(before, 0) + nxt.get(after, 0)
|
||||||
|
if add:
|
||||||
|
nxt[after] = add
|
||||||
|
combinations = nxt
|
||||||
|
print(combinations)
|
||||||
|
|
||||||
|
letters = {}
|
||||||
|
for key, cnt in combinations.items():
|
||||||
|
letters[key[0]] = letters.get(key[0], 0) + cnt
|
||||||
|
letters[key[1]] = letters.get(key[1], 0) + cnt
|
||||||
|
|
||||||
|
print(letters)
|
||||||
|
print((max(*letters.values())+1) // 2 - (min(*letters.values())+1) // 2)
|
||||||
Reference in New Issue
Block a user