Create day14.py

This commit is contained in:
kamoshi 2020-12-14 12:32:43 +01:00 committed by GitHub
parent 403e56f74c
commit 37e1ebe7b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

33
2020/Python/day14.py Normal file
View file

@ -0,0 +1,33 @@
def parse_data() -> list[str]:
lines = []
with open("input.txt") as file:
for line in file:
lines.append(line.rstrip())
return lines
def solve_p1(program: list[str]) -> int:
bit_mask = "XXXXXXXXXXXXXXXXXXX"
mem = {}
def apply_mask(_number: int, _mask: str) -> int:
res = _number
and_mask = int("".join(["1" if x == 'X' else "0" for x in _mask]), 2)
res = res & and_mask
or_mask = int("".join([x if x in "01" else "0" for x in _mask]), 2)
res = res | or_mask
return res
for line in program:
lvalue, rvalue = line.split(" = ")
if lvalue == "mask":
bit_mask = rvalue
elif lvalue[:3] == "mem":
address = lvalue[4:-1]
result = apply_mask(int(rvalue), bit_mask)
mem[address] = result
return sum(mem.values())
print(solve_p1(parse_data()))