Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def day14_2():
- with open("input.txt", "r") as file:
- data = file.readlines()
- mem = {}
- on_mask = 0
- for line in data:
- if line[1] == "a": # Mask
- mask = line[7:-1]
- on_mask = int(mask.replace("X", "0"), base=2) # OR to set 1s
- else:
- addr = [int(i) for i in bin(int(line[line.find("[") + 1:line.find("]")]) | on_mask)[2:]]
- val = int(line[line.find("=") + 2:-1])
- floating = [i - len(addr) for i, a in enumerate(mask) if a == "X"]
- for i in range(2**len(floating)):
- for j, k in enumerate(floating):
- addr[k] = (i & (1 << j)) >> j
- new_addr = int("".join(map(str, addr)), 2)
- mem[new_addr] = val
- total = 0
- for k, v in mem.items():
- total += v
- return total
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement