From 399f190ec4d9ed60d49d3c54cc0a22d657d2864c Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Tue, 14 Dec 2021 11:05:54 +0100 Subject: [PATCH] [2021] day 14 python naive --- 2021/.input/day14 | 102 +++++++++++++++++++++++++++++++++++++++++++ 2021/Python/day14.py | 40 +++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 2021/.input/day14 create mode 100644 2021/Python/day14.py diff --git a/2021/.input/day14 b/2021/.input/day14 new file mode 100644 index 0000000..0193644 --- /dev/null +++ b/2021/.input/day14 @@ -0,0 +1,102 @@ +CKKOHNSBPCPCHVNKHFFK + +KO -> C +SO -> S +BF -> V +VN -> B +OV -> K +VH -> O +KV -> N +KB -> F +NB -> C +HS -> K +PF -> B +HB -> N +OC -> H +FS -> F +VV -> S +KF -> C +FN -> F +KP -> S +HO -> N +NH -> K +OO -> S +FB -> C +BP -> F +CH -> N +SN -> O +KN -> B +CV -> O +CC -> B +VB -> C +PH -> V +CO -> K +KS -> K +BK -> N +FH -> S +PV -> H +CB -> P +FO -> F +BB -> K +OB -> C +HH -> F +ON -> O +FK -> B +NF -> F +SV -> F +CP -> H +SS -> B +OP -> H +NS -> O +HK -> N +BC -> P +NV -> V +VS -> F +PC -> V +CS -> F +NP -> V +PS -> F +VC -> F +KK -> S +PO -> P +HF -> H +KC -> P +SF -> N +BV -> N +FF -> V +FV -> V +BO -> N +OS -> C +OF -> H +CN -> S +NO -> O +NC -> B +VK -> C +HN -> B +PK -> N +SK -> S +HV -> F +BH -> B +OK -> S +VO -> B +BS -> H +PP -> N +SC -> K +BN -> P +FC -> S +SB -> B +SH -> H +NN -> V +NK -> N +VF -> H +CF -> F +PB -> C +SP -> P +KH -> C +VP -> N +CK -> H +HP -> P +FP -> B +HC -> O +PN -> F +OH -> H diff --git a/2021/Python/day14.py b/2021/Python/day14.py new file mode 100644 index 0000000..f0733ef --- /dev/null +++ b/2021/Python/day14.py @@ -0,0 +1,40 @@ +import re + + +input_pattern = re.compile(r"([A-Z]+) -> ([A-Z]+)") + + +def load(): + with open("../.input/day14", "r") as f: + start, rest = f.read().split("\n\n") + return start, input_pattern.findall(rest) + + +def step(start, rules): + output = [] + for pair in zip(start, start[1:]): + c1, c2 = pair + output.append(c1) + output.append(rules[c1+c2]) + output.append(start[-1]) + return output + + +def solve1(): + start, rules = load() + rules = {k: v for k, v in rules} + + for _ in range(10): + start = step(start, rules) + + chars = {} + for c in start: + chars[c] = chars.get(c, 0) + 1 + + values = list(sorted(chars.values(), reverse=True)) + return values[0] - values[-1] + + +if __name__ == "__main__": + print(solve1()) +