44 lines
882 B
Python
44 lines
882 B
Python
import re
|
|
|
|
|
|
def getResult(input, mask):
|
|
value = int(input)
|
|
bstring = format(value, '#038b')[2:]
|
|
result = ""
|
|
for i in range(0, 36):
|
|
if mask[i] == 'X':
|
|
result += bstring[i]
|
|
else:
|
|
result += mask[i]
|
|
return result
|
|
|
|
|
|
def part1():
|
|
file = open("input.txt")
|
|
lines = [i.strip() for i in file.readlines()]
|
|
|
|
mask = ''
|
|
mem = {}
|
|
for line in lines:
|
|
line = line.split(' ')
|
|
if line[0] == 'mask':
|
|
mask = line[2]
|
|
elif line[0].startswith('mem'):
|
|
mem_slot = re.split('mem\[([0-9]+)]', line[0])[1]
|
|
result = getResult(line[2], mask)
|
|
mem[mem_slot] = result
|
|
|
|
mem_sum = 0
|
|
for memo in mem:
|
|
mem_sum += int(mem[memo], 2)
|
|
print(f"Part 1: {mem_sum}")
|
|
|
|
|
|
def part2():
|
|
print("Part 2: ")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
part1()
|
|
part2()
|