day14
This commit is contained in:
parent
1d3df3bdb8
commit
55e62174db
47
day14.py
Normal file
47
day14.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
from tools.aoc import AOCDay
|
||||||
|
from typing import Any, Dict, List
|
||||||
|
|
||||||
|
|
||||||
|
def getInitialDicts(puzzle: List[str]) -> (Dict[str, int], Dict[str, int], Dict[str, str]):
|
||||||
|
polymer = puzzle[0]
|
||||||
|
inserts = {}
|
||||||
|
for p1 in puzzle[2:]:
|
||||||
|
pair, insert_char = p1.split(" -> ")
|
||||||
|
inserts[pair] = insert_char
|
||||||
|
|
||||||
|
pairs = {}
|
||||||
|
charcount = {}
|
||||||
|
for x in range(len(polymer) - 1):
|
||||||
|
pairs[polymer[x:x + 2]] = pairs.get(polymer[x:x + 2], 0) + 1
|
||||||
|
charcount[polymer[x]] = charcount.get(polymer[x], 0) + 1
|
||||||
|
|
||||||
|
charcount[polymer[-1]] = charcount.get(polymer[-1], 0) + 1
|
||||||
|
|
||||||
|
return pairs, charcount, inserts
|
||||||
|
|
||||||
|
|
||||||
|
def insert(pairs: Dict[str, int], charcount: Dict[str, int], inserts: Dict[str, str], count: int):
|
||||||
|
for _ in range(count):
|
||||||
|
new_pairs = {}
|
||||||
|
for p in pairs:
|
||||||
|
p1 = p[0] + inserts[p]
|
||||||
|
p2 = inserts[p] + p[1]
|
||||||
|
charcount[inserts[p]] = charcount.get(inserts[p], 0) + pairs[p]
|
||||||
|
new_pairs[p1] = new_pairs.get(p1, 0) + pairs[p]
|
||||||
|
new_pairs[p2] = new_pairs.get(p2, 0) + pairs[p]
|
||||||
|
pairs = new_pairs
|
||||||
|
|
||||||
|
|
||||||
|
class Day(AOCDay):
|
||||||
|
test_solutions_p1 = [1588, 3230]
|
||||||
|
test_solutions_p2 = [2188189693529, 3542388214529]
|
||||||
|
|
||||||
|
def part1(self) -> Any:
|
||||||
|
pairs, charcount, inserts = getInitialDicts(self.getInput())
|
||||||
|
insert(pairs, charcount, inserts, 10)
|
||||||
|
return max(charcount.values()) - min(charcount.values())
|
||||||
|
|
||||||
|
def part2(self) -> Any:
|
||||||
|
pairs, charcount, inserts = getInitialDicts(self.getInput())
|
||||||
|
insert(pairs, charcount, inserts, 40)
|
||||||
|
return max(charcount.values()) - min(charcount.values())
|
||||||
102
inputs/input14
Normal file
102
inputs/input14
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
NCOPHKVONVPNSKSHBNPF
|
||||||
|
|
||||||
|
ON -> C
|
||||||
|
CK -> H
|
||||||
|
HC -> B
|
||||||
|
NP -> S
|
||||||
|
NH -> H
|
||||||
|
CB -> C
|
||||||
|
BB -> H
|
||||||
|
BC -> H
|
||||||
|
NN -> C
|
||||||
|
OH -> B
|
||||||
|
SF -> V
|
||||||
|
PB -> H
|
||||||
|
CP -> P
|
||||||
|
BN -> O
|
||||||
|
NB -> B
|
||||||
|
KB -> P
|
||||||
|
PV -> F
|
||||||
|
SH -> V
|
||||||
|
KP -> S
|
||||||
|
OF -> K
|
||||||
|
BS -> V
|
||||||
|
PF -> O
|
||||||
|
BK -> S
|
||||||
|
FB -> B
|
||||||
|
SV -> B
|
||||||
|
BH -> V
|
||||||
|
VK -> N
|
||||||
|
CS -> V
|
||||||
|
FV -> F
|
||||||
|
HS -> C
|
||||||
|
KK -> O
|
||||||
|
SP -> N
|
||||||
|
FK -> B
|
||||||
|
CF -> C
|
||||||
|
HP -> F
|
||||||
|
BF -> O
|
||||||
|
KC -> C
|
||||||
|
VP -> O
|
||||||
|
BP -> P
|
||||||
|
FF -> V
|
||||||
|
NO -> C
|
||||||
|
HK -> C
|
||||||
|
HV -> B
|
||||||
|
PK -> P
|
||||||
|
OV -> F
|
||||||
|
VN -> H
|
||||||
|
PC -> K
|
||||||
|
SB -> H
|
||||||
|
VO -> V
|
||||||
|
BV -> K
|
||||||
|
NC -> H
|
||||||
|
OB -> S
|
||||||
|
SN -> B
|
||||||
|
HF -> P
|
||||||
|
VF -> B
|
||||||
|
HN -> H
|
||||||
|
KS -> S
|
||||||
|
SC -> S
|
||||||
|
CV -> B
|
||||||
|
NS -> P
|
||||||
|
KO -> V
|
||||||
|
FS -> O
|
||||||
|
PH -> K
|
||||||
|
BO -> C
|
||||||
|
FH -> B
|
||||||
|
CO -> O
|
||||||
|
FO -> F
|
||||||
|
VV -> N
|
||||||
|
CH -> V
|
||||||
|
NK -> N
|
||||||
|
PO -> K
|
||||||
|
OK -> K
|
||||||
|
PP -> O
|
||||||
|
OC -> P
|
||||||
|
FC -> N
|
||||||
|
VH -> S
|
||||||
|
PN -> C
|
||||||
|
VB -> C
|
||||||
|
VS -> P
|
||||||
|
HO -> F
|
||||||
|
OP -> S
|
||||||
|
HB -> N
|
||||||
|
CC -> K
|
||||||
|
KN -> S
|
||||||
|
SK -> C
|
||||||
|
OS -> N
|
||||||
|
KH -> B
|
||||||
|
FP -> S
|
||||||
|
NF -> S
|
||||||
|
CN -> S
|
||||||
|
KF -> C
|
||||||
|
SS -> C
|
||||||
|
SO -> S
|
||||||
|
NV -> O
|
||||||
|
FN -> B
|
||||||
|
PS -> S
|
||||||
|
HH -> C
|
||||||
|
VC -> S
|
||||||
|
OO -> C
|
||||||
|
KV -> P
|
||||||
18
inputs/test_input14_1_0
Normal file
18
inputs/test_input14_1_0
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
|
||||||
102
inputs/test_input14_1_1
Normal file
102
inputs/test_input14_1_1
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
NCOPHKVONVPNSKSHBNPF
|
||||||
|
|
||||||
|
ON -> C
|
||||||
|
CK -> H
|
||||||
|
HC -> B
|
||||||
|
NP -> S
|
||||||
|
NH -> H
|
||||||
|
CB -> C
|
||||||
|
BB -> H
|
||||||
|
BC -> H
|
||||||
|
NN -> C
|
||||||
|
OH -> B
|
||||||
|
SF -> V
|
||||||
|
PB -> H
|
||||||
|
CP -> P
|
||||||
|
BN -> O
|
||||||
|
NB -> B
|
||||||
|
KB -> P
|
||||||
|
PV -> F
|
||||||
|
SH -> V
|
||||||
|
KP -> S
|
||||||
|
OF -> K
|
||||||
|
BS -> V
|
||||||
|
PF -> O
|
||||||
|
BK -> S
|
||||||
|
FB -> B
|
||||||
|
SV -> B
|
||||||
|
BH -> V
|
||||||
|
VK -> N
|
||||||
|
CS -> V
|
||||||
|
FV -> F
|
||||||
|
HS -> C
|
||||||
|
KK -> O
|
||||||
|
SP -> N
|
||||||
|
FK -> B
|
||||||
|
CF -> C
|
||||||
|
HP -> F
|
||||||
|
BF -> O
|
||||||
|
KC -> C
|
||||||
|
VP -> O
|
||||||
|
BP -> P
|
||||||
|
FF -> V
|
||||||
|
NO -> C
|
||||||
|
HK -> C
|
||||||
|
HV -> B
|
||||||
|
PK -> P
|
||||||
|
OV -> F
|
||||||
|
VN -> H
|
||||||
|
PC -> K
|
||||||
|
SB -> H
|
||||||
|
VO -> V
|
||||||
|
BV -> K
|
||||||
|
NC -> H
|
||||||
|
OB -> S
|
||||||
|
SN -> B
|
||||||
|
HF -> P
|
||||||
|
VF -> B
|
||||||
|
HN -> H
|
||||||
|
KS -> S
|
||||||
|
SC -> S
|
||||||
|
CV -> B
|
||||||
|
NS -> P
|
||||||
|
KO -> V
|
||||||
|
FS -> O
|
||||||
|
PH -> K
|
||||||
|
BO -> C
|
||||||
|
FH -> B
|
||||||
|
CO -> O
|
||||||
|
FO -> F
|
||||||
|
VV -> N
|
||||||
|
CH -> V
|
||||||
|
NK -> N
|
||||||
|
PO -> K
|
||||||
|
OK -> K
|
||||||
|
PP -> O
|
||||||
|
OC -> P
|
||||||
|
FC -> N
|
||||||
|
VH -> S
|
||||||
|
PN -> C
|
||||||
|
VB -> C
|
||||||
|
VS -> P
|
||||||
|
HO -> F
|
||||||
|
OP -> S
|
||||||
|
HB -> N
|
||||||
|
CC -> K
|
||||||
|
KN -> S
|
||||||
|
SK -> C
|
||||||
|
OS -> N
|
||||||
|
KH -> B
|
||||||
|
FP -> S
|
||||||
|
NF -> S
|
||||||
|
CN -> S
|
||||||
|
KF -> C
|
||||||
|
SS -> C
|
||||||
|
SO -> S
|
||||||
|
NV -> O
|
||||||
|
FN -> B
|
||||||
|
PS -> S
|
||||||
|
HH -> C
|
||||||
|
VC -> S
|
||||||
|
OO -> C
|
||||||
|
KV -> P
|
||||||
18
inputs/test_input14_2_0
Normal file
18
inputs/test_input14_2_0
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
|
||||||
102
inputs/test_input14_2_1
Normal file
102
inputs/test_input14_2_1
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
NCOPHKVONVPNSKSHBNPF
|
||||||
|
|
||||||
|
ON -> C
|
||||||
|
CK -> H
|
||||||
|
HC -> B
|
||||||
|
NP -> S
|
||||||
|
NH -> H
|
||||||
|
CB -> C
|
||||||
|
BB -> H
|
||||||
|
BC -> H
|
||||||
|
NN -> C
|
||||||
|
OH -> B
|
||||||
|
SF -> V
|
||||||
|
PB -> H
|
||||||
|
CP -> P
|
||||||
|
BN -> O
|
||||||
|
NB -> B
|
||||||
|
KB -> P
|
||||||
|
PV -> F
|
||||||
|
SH -> V
|
||||||
|
KP -> S
|
||||||
|
OF -> K
|
||||||
|
BS -> V
|
||||||
|
PF -> O
|
||||||
|
BK -> S
|
||||||
|
FB -> B
|
||||||
|
SV -> B
|
||||||
|
BH -> V
|
||||||
|
VK -> N
|
||||||
|
CS -> V
|
||||||
|
FV -> F
|
||||||
|
HS -> C
|
||||||
|
KK -> O
|
||||||
|
SP -> N
|
||||||
|
FK -> B
|
||||||
|
CF -> C
|
||||||
|
HP -> F
|
||||||
|
BF -> O
|
||||||
|
KC -> C
|
||||||
|
VP -> O
|
||||||
|
BP -> P
|
||||||
|
FF -> V
|
||||||
|
NO -> C
|
||||||
|
HK -> C
|
||||||
|
HV -> B
|
||||||
|
PK -> P
|
||||||
|
OV -> F
|
||||||
|
VN -> H
|
||||||
|
PC -> K
|
||||||
|
SB -> H
|
||||||
|
VO -> V
|
||||||
|
BV -> K
|
||||||
|
NC -> H
|
||||||
|
OB -> S
|
||||||
|
SN -> B
|
||||||
|
HF -> P
|
||||||
|
VF -> B
|
||||||
|
HN -> H
|
||||||
|
KS -> S
|
||||||
|
SC -> S
|
||||||
|
CV -> B
|
||||||
|
NS -> P
|
||||||
|
KO -> V
|
||||||
|
FS -> O
|
||||||
|
PH -> K
|
||||||
|
BO -> C
|
||||||
|
FH -> B
|
||||||
|
CO -> O
|
||||||
|
FO -> F
|
||||||
|
VV -> N
|
||||||
|
CH -> V
|
||||||
|
NK -> N
|
||||||
|
PO -> K
|
||||||
|
OK -> K
|
||||||
|
PP -> O
|
||||||
|
OC -> P
|
||||||
|
FC -> N
|
||||||
|
VH -> S
|
||||||
|
PN -> C
|
||||||
|
VB -> C
|
||||||
|
VS -> P
|
||||||
|
HO -> F
|
||||||
|
OP -> S
|
||||||
|
HB -> N
|
||||||
|
CC -> K
|
||||||
|
KN -> S
|
||||||
|
SK -> C
|
||||||
|
OS -> N
|
||||||
|
KH -> B
|
||||||
|
FP -> S
|
||||||
|
NF -> S
|
||||||
|
CN -> S
|
||||||
|
KF -> C
|
||||||
|
SS -> C
|
||||||
|
SO -> S
|
||||||
|
NV -> O
|
||||||
|
FN -> B
|
||||||
|
PS -> S
|
||||||
|
HH -> C
|
||||||
|
VC -> S
|
||||||
|
OO -> C
|
||||||
|
KV -> P
|
||||||
Loading…
Reference in New Issue
Block a user