From b5b2e2ba86477c66d8186b80cc6bda3be284863f Mon Sep 17 00:00:00 2001 From: Sebastian Seedorf Date: Mon, 14 Dec 2020 15:51:58 +0100 Subject: [PATCH] Day 14 (minified 2) --- day14/part2-minified.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/day14/part2-minified.py b/day14/part2-minified.py index 7eba026..00acf29 100644 --- a/day14/part2-minified.py +++ b/day14/part2-minified.py @@ -1,4 +1,5 @@ -import re;l=(x.strip()for x in open("input.txt"));m={} -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 k in l:s,match=(re.match(r"mask = (.+)",k)or(0,s))[1],re.match(r"mem\[(.+)] = (.+)",k);addr,dec=match and list(map(int,match and match.groups()))or(-1,0);m={**m,**{x:dec for x in(c([(a if b=='0'else b)for a,b in zip(format(addr,'036b'),s)])if addr!=-1else[])}} +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()))