2024 Dec 12th

This commit is contained in:
Julia Lange 2024-12-12 12:12:54 -08:00
parent f5a06a5a86
commit 69dbfddfae
Signed by: Julia
SSH key fingerprint: SHA256:KI8YxpkPRbnDRkXPgCuQCVz181++Vy7NAvmQj8alOhM

45
Python/2024/12/main.py Normal file
View file

@ -0,0 +1,45 @@
input = open("input", 'r')
# d = [line for line in input]
# d = [[val for val in line.strip()] for line in input]
d = {(complex(x,y)): c for y,line in enumerate(input) for x,c in enumerate(line.strip())}
def run(p2=False):
regionPrice = []
s = set()
for point, plot in d.items():
if point in s: continue
q = [point]
area = 0
sides = set()
while q:
point = q.pop()
if point in s: continue
s.add(point)
area += 1
for dr in {1,-1,1j,-1j}:
npoint = point + dr
if npoint in d and d[npoint] == plot:
q.append(npoint)
else:
sides.add((dr, point))
if p2:
nsides = sides.copy()
for side in sides:
if side not in nsides:
continue
sdr, spoint = side
for dr in {1,-1,1j,-1j} - {sdr, -sdr}:
point = spoint + dr
while (sdr, point) in nsides:
nsides.discard((sdr,point))
point = point + dr
sides = nsides
regionPrice.append(len(sides) * area)
return sum(regionPrice)
print(run())
print(run(True))