[py] Port 2021_14
This commit is contained in:
parent
1dc77551b3
commit
81945a973d
4 changed files with 12 additions and 17 deletions
|
|
@ -1,102 +0,0 @@
|
|||
BNSOSBBKPCSCPKPOPNNK
|
||||
|
||||
HH -> N
|
||||
CO -> F
|
||||
BC -> O
|
||||
HN -> V
|
||||
SV -> S
|
||||
FS -> F
|
||||
CV -> F
|
||||
KN -> F
|
||||
OP -> H
|
||||
VN -> P
|
||||
PF -> P
|
||||
HP -> H
|
||||
FK -> K
|
||||
BS -> F
|
||||
FP -> H
|
||||
FN -> V
|
||||
VV -> O
|
||||
PS -> S
|
||||
SK -> N
|
||||
FF -> K
|
||||
PK -> V
|
||||
OF -> N
|
||||
VP -> K
|
||||
KB -> H
|
||||
OV -> B
|
||||
CH -> F
|
||||
SF -> F
|
||||
NH -> O
|
||||
NC -> N
|
||||
SP -> N
|
||||
NN -> F
|
||||
OK -> S
|
||||
BB -> S
|
||||
NK -> S
|
||||
FH -> P
|
||||
FC -> S
|
||||
OB -> P
|
||||
VS -> P
|
||||
BF -> S
|
||||
HC -> V
|
||||
CK -> O
|
||||
NP -> K
|
||||
KV -> S
|
||||
OS -> V
|
||||
CF -> V
|
||||
FB -> C
|
||||
HO -> S
|
||||
BV -> V
|
||||
KS -> C
|
||||
HB -> S
|
||||
SO -> N
|
||||
PH -> C
|
||||
PN -> F
|
||||
OC -> F
|
||||
KO -> F
|
||||
VF -> V
|
||||
CS -> O
|
||||
VK -> O
|
||||
FV -> N
|
||||
OO -> K
|
||||
NS -> S
|
||||
KK -> C
|
||||
FO -> S
|
||||
PV -> S
|
||||
CN -> O
|
||||
VC -> P
|
||||
SS -> C
|
||||
PO -> P
|
||||
BN -> N
|
||||
PB -> N
|
||||
PC -> H
|
||||
SH -> K
|
||||
BH -> F
|
||||
HK -> O
|
||||
VB -> P
|
||||
NV -> O
|
||||
NB -> C
|
||||
CP -> H
|
||||
NO -> K
|
||||
PP -> N
|
||||
CC -> S
|
||||
CB -> K
|
||||
VH -> H
|
||||
SC -> C
|
||||
KC -> N
|
||||
SB -> B
|
||||
BP -> P
|
||||
KP -> K
|
||||
SN -> H
|
||||
KF -> K
|
||||
KH -> B
|
||||
HV -> V
|
||||
HS -> K
|
||||
NF -> B
|
||||
ON -> H
|
||||
BO -> P
|
||||
VO -> K
|
||||
OH -> C
|
||||
HF -> O
|
||||
BK -> H
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
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
|
||||
|
|
@ -2,9 +2,11 @@ import sys
|
|||
import argparse
|
||||
from pathlib import Path
|
||||
|
||||
from .y2021 import d14
|
||||
from .y2022 import d01, d02, d03, d04
|
||||
|
||||
DAYS = {
|
||||
"2021_14": y2021.d14.solve,
|
||||
"2022_01": y2022.d01.solve,
|
||||
"2022_02": y2022.d02.solve,
|
||||
"2022_03": y2022.d03.solve,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import argparse
|
||||
from pathlib import Path
|
||||
from collections import Counter
|
||||
|
||||
|
||||
def step(pairs, rules):
|
||||
result = Counter()
|
||||
for pair, amount in pairs.items():
|
||||
|
|
@ -13,6 +13,7 @@ def step(pairs, rules):
|
|||
result[pair] += amount
|
||||
return result
|
||||
|
||||
|
||||
def count_chars(template, pairs):
|
||||
chars = Counter()
|
||||
for pair, amount in pairs.items():
|
||||
|
|
@ -20,20 +21,15 @@ def count_chars(template, pairs):
|
|||
chars[template[-1]] += 1
|
||||
return chars
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("file", type=Path)
|
||||
args = parser.parse_args()
|
||||
|
||||
with open(args.file) as f:
|
||||
template = next(f).strip()
|
||||
next(f)
|
||||
rules = {}
|
||||
for line in f:
|
||||
pair, char = line.strip().split(" -> ")
|
||||
rules[pair] = (pair[0] + char, char + pair[1])
|
||||
def solve(inputstr):
|
||||
template, rest = inputstr.split("\n\n", maxsplit=1)
|
||||
rules = {}
|
||||
for line in rest.splitlines():
|
||||
pair, char = line.split(" -> ")
|
||||
rules[pair] = (pair[0] + char, char + pair[1])
|
||||
|
||||
pairs = Counter(template[i:i+2] for i in range(len(template) - 1))
|
||||
pairs = Counter(template[i : i + 2] for i in range(len(template) - 1))
|
||||
|
||||
for i in range(10):
|
||||
pairs = step(pairs, rules)
|
||||
|
|
@ -41,11 +37,8 @@ def main():
|
|||
chars = count_chars(template, pairs).most_common()
|
||||
print(f"Part 1: {chars[0][1] - chars[-1][1]}")
|
||||
|
||||
for i in range(30): # 40 steps total
|
||||
for i in range(30): # 40 steps total
|
||||
pairs = step(pairs, rules)
|
||||
|
||||
chars = count_chars(template, pairs).most_common()
|
||||
print(f"Part 2: {chars[0][1] - chars[-1][1]}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue