Files
python-aoc-2020/day14/part2-minified.py
Sebastian Seedorf b5b2e2ba86 Day 14 (minified 2)
2020-12-14 15:51:58 +01:00

6 lines
472 B
Python

import re;m,s={},"0"*36
def c(r,s=0):yield from (i for it in((0,1)if r[0]=='X'else(int(r[0]),))for i in c(r[1:],s*2+it))if len(r)else[s]
for(addr,dec),s in map(lambda k:(list(map(int,getattr(re.match(r"mem\[(.+)] = (.+)",k),'groups',lambda:(-1,0))())),(re.match(r"mask = (.+)",k)or(0,s))[1]),(x.strip()for x in open("input.txt"))):
m={**m,**dict((x,dec) for x in(c([(a if b=='0'else b)for a,b in zip(format(addr,'036b'),s)])if addr!=-1else[]))}
print(sum(m.values()))