importredefclaims(input):c=input.read().splitlines()side=1000matrix=[["O"forxinrange(side)]foryinrange(side)]idx=r'\d*(,)\d*'dim=r'\d*(x)\d*'cl=r'(#)\d*'all_ids=set()overlap_ids=set()forclaiminc:claimant=int(re.search(cl,claim).group(0)[1:])all_ids.add(claimant)inidicies=[int(i)foriinre.search(idx,claim).group(0).split(',')]dimensions=[int(i)foriinre.search(dim,claim).group(0).split('x')]x=inidicies[0]y=inidicies[1]width=dimensions[0]height=dimensions[1]for_inrange(height):for_inrange(width):space=matrix[y][x]ifspace=="O":# first claim to this space
matrix[y][x]=claimantelifspace=='X':# claim overlaps with existing overlapped claim
overlap_ids.add(claimant)else:# claim overlaps with exactly one preexisting claim
overlap_ids.add(claimant)overlap_ids.add(space)matrix[y][x]="X"x+=1x=inidicies[0]y+=1returnall_ids.difference(overlap_ids)print(claims(open('input.txt','r')))
My messy af Python solutions. If I’m feeling energetic later today I’ll clean these up and write a Golang solution and benchmark the 2 :)
Part 1:
Part 2
github.com/thejessleigh/aoc18/tree...