From 00801bcb48fc9f9111f143c3fe5e675e02397392 Mon Sep 17 00:00:00 2001 From: Sebastian Seedorf Date: Mon, 14 Dec 2020 10:49:11 +0100 Subject: [PATCH] Day 14 (glamorized) --- day14/part1.py | 10 +++++----- day14/part2.py | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/day14/part1.py b/day14/part1.py index a89912d..43476dc 100644 --- a/day14/part1.py +++ b/day14/part1.py @@ -3,19 +3,19 @@ import re lines = (x.strip() for x in open("input.txt")) mem = {} regex_mask = re.compile(r"mask = (.+)") -regex_mem = re.compile(r"mem\[(.*)] = (.+)") +regex_mem = re.compile(r"mem\[(.+)] = (.+)") mask_and = 0 mask_or = -1 for line in lines: match = regex_mask.match(line) if match is not None: - mask = match.group(1)[::-1] - mask_and = sum(2**i for i, v in enumerate(mask) if v != '0') - mask_or = sum(2**i for i, v in enumerate(mask) if v == '1') + mask = match.group(1) + mask_and = int(mask.replace('X', '1'), 2) + mask_or = int(mask.replace('X', '0'), 2) else: match = regex_mem.match(line) addr, dec = list(map(int, match.groups())) mem[addr] = dec & mask_and | mask_or -print(sum(map(lambda x: mem[x], mem))) +print(sum(mem.values())) diff --git a/day14/part2.py b/day14/part2.py index 415ba16..2e28282 100644 --- a/day14/part2.py +++ b/day14/part2.py @@ -3,7 +3,7 @@ import re lines = (x.strip() for x in open("input.txt")) mem = {} regex_mask = re.compile(r"mask = (.+)") -regex_mem = re.compile(r"mem\[(.*)] = (.+)") +regex_mem = re.compile(r"mem\[(.+)] = (.+)") mask = "" @@ -31,4 +31,4 @@ for line in lines: for x in combination(res): mem[x] = dec -print(sum(map(lambda x: mem[x], mem))) +print(sum(mem.values()))