added day 14
This commit is contained in:
parent
0707c53b7b
commit
d6179dc2e6
102
14/input01.txt
Normal file
102
14/input01.txt
Normal file
@ -0,0 +1,102 @@
|
||||
FNFPPNKPPHSOKFFHOFOC
|
||||
|
||||
VS -> B
|
||||
SV -> C
|
||||
PP -> N
|
||||
NS -> N
|
||||
BC -> N
|
||||
PB -> F
|
||||
BK -> P
|
||||
NV -> V
|
||||
KF -> C
|
||||
KS -> C
|
||||
PV -> N
|
||||
NF -> S
|
||||
PK -> F
|
||||
SC -> F
|
||||
KN -> K
|
||||
PN -> K
|
||||
OH -> F
|
||||
PS -> P
|
||||
FN -> O
|
||||
OP -> B
|
||||
FO -> C
|
||||
HS -> F
|
||||
VO -> C
|
||||
OS -> B
|
||||
PF -> V
|
||||
SB -> V
|
||||
KO -> O
|
||||
SK -> N
|
||||
KB -> F
|
||||
KH -> C
|
||||
CC -> B
|
||||
CS -> C
|
||||
OF -> C
|
||||
FS -> B
|
||||
FP -> H
|
||||
VN -> O
|
||||
NB -> N
|
||||
BS -> H
|
||||
PC -> H
|
||||
OO -> F
|
||||
BF -> O
|
||||
HC -> P
|
||||
BH -> S
|
||||
NP -> P
|
||||
FB -> C
|
||||
CB -> H
|
||||
BO -> C
|
||||
NN -> V
|
||||
SF -> N
|
||||
FC -> F
|
||||
KK -> C
|
||||
CN -> N
|
||||
BV -> F
|
||||
FK -> C
|
||||
CF -> F
|
||||
VV -> B
|
||||
VF -> S
|
||||
CK -> C
|
||||
OV -> P
|
||||
NC -> N
|
||||
SS -> F
|
||||
NK -> V
|
||||
HN -> O
|
||||
ON -> P
|
||||
FH -> O
|
||||
OB -> H
|
||||
SH -> H
|
||||
NH -> V
|
||||
FF -> B
|
||||
HP -> B
|
||||
PO -> P
|
||||
HB -> H
|
||||
CH -> N
|
||||
SN -> P
|
||||
HK -> P
|
||||
FV -> H
|
||||
SO -> O
|
||||
VH -> V
|
||||
BP -> V
|
||||
CV -> P
|
||||
KP -> K
|
||||
VB -> N
|
||||
HV -> K
|
||||
SP -> N
|
||||
HO -> P
|
||||
CP -> H
|
||||
VC -> N
|
||||
CO -> S
|
||||
BN -> H
|
||||
NO -> B
|
||||
HF -> O
|
||||
VP -> K
|
||||
KV -> H
|
||||
KC -> F
|
||||
HH -> C
|
||||
BB -> K
|
||||
VK -> P
|
||||
OK -> C
|
||||
OC -> C
|
||||
PH -> H
|
18
14/input01_sample.txt
Normal file
18
14/input01_sample.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
|
36
14/solve01.py
Normal file
36
14/solve01.py
Normal file
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import re
|
||||
|
||||
RE_INS = re.compile("(.*)\s+->\s+(.*)$")
|
||||
|
||||
def iterate_polymer(polymer, rules):
|
||||
result = polymer[0]
|
||||
for i in range(0, len(polymer)-1):
|
||||
k = polymer[i:i+2]
|
||||
if k in rules.keys():
|
||||
result = result + rules[k]+k[1]
|
||||
else:
|
||||
result = result+k[1]
|
||||
return result
|
||||
|
||||
polymer = None
|
||||
rules = dict()
|
||||
|
||||
with open("input01.txt","r") as f:
|
||||
polymer = f. readline().strip()
|
||||
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if len(line) == 0:
|
||||
continue
|
||||
m = RE_INS.match(line)
|
||||
if not m:
|
||||
print(line)
|
||||
rules[m.group(1)] = m.group(2)
|
||||
|
||||
for i in range(10):
|
||||
polymer = iterate_polymer(polymer, rules)
|
||||
|
||||
count = [polymer.count(i) for i in set(polymer)]
|
||||
print(max(count) - min(count))
|
63
14/solve02.py
Normal file
63
14/solve02.py
Normal file
@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import re
|
||||
from collections import defaultdict
|
||||
|
||||
RE_INS = re.compile("(.*)\s+->\s+(.*)$")
|
||||
|
||||
def tokenize_polymer(polymer):
|
||||
result = defaultdict(int)
|
||||
for i in range(0, len(polymer)-1):
|
||||
k = polymer[i:i+2]
|
||||
result[k] += 1
|
||||
return result
|
||||
|
||||
def iterate_polymer(polymer, rules):
|
||||
delta = defaultdict(int)
|
||||
pairs = list(polymer.keys())
|
||||
for pair in pairs:
|
||||
if pair not in rules:
|
||||
continue
|
||||
if polymer[pair] == 0:
|
||||
continue
|
||||
p1 = pair[0]+rules[pair]
|
||||
p2 = rules[pair]+pair[1]
|
||||
delta[p1] += polymer[pair]
|
||||
delta[p2] += polymer[pair]
|
||||
delta[pair] -= polymer[pair]
|
||||
for pair in delta:
|
||||
polymer[pair] += delta[pair]
|
||||
return polymer
|
||||
|
||||
polymer = None
|
||||
rules = dict()
|
||||
polymer_pairs = defaultdict(int)
|
||||
|
||||
with open("input01.txt","r") as f:
|
||||
polymer = f. readline().strip()
|
||||
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
if len(line) == 0:
|
||||
continue
|
||||
m = RE_INS.match(line)
|
||||
if not m:
|
||||
print(line)
|
||||
rules[m.group(1)] = m.group(2)
|
||||
for i in range(0, len(polymer)-1):
|
||||
k = polymer[i:i+2]
|
||||
polymer_pairs[k] += 1
|
||||
|
||||
polymer_pairs = tokenize_polymer(polymer)
|
||||
for i in range(40):
|
||||
polymer_pairs = iterate_polymer(polymer_pairs, rules)
|
||||
# print(polymer_pairs)
|
||||
|
||||
sums = defaultdict(int)
|
||||
for i in polymer_pairs.keys():
|
||||
sums[i[1]] += polymer_pairs[i]
|
||||
sums[polymer[0]] += 1
|
||||
|
||||
p_max = max([x for x in sums.values()])
|
||||
p_min = min([x for x in sums.values()])
|
||||
print(p_max - p_min)
|
Loading…
x
Reference in New Issue
Block a user