advent-of-code/2025-python/output/day_06.py
Anders Englöf Ytterström 68be80a4d4 Solve 2025 day 6 pt 1-2
Lost 20 minutes in pt 1 not rembering that a print()
of a zip consumes it and makes it not loopable: had
I just used list(zip()) or removed the print, I would
have had the answer in a decent time frame.

Pt 2 was fun! I first experienced with ljust() and
rjust(), only to realize the input was mixed. Instead,
I threated the input as a grid.
2025-12-10 00:34:12 +01:00

40 lines
926 B
Python

import re
from math import prod
def solve(data):
p1 = 0
p2 = 0
rows = data.splitlines()
J = max(len(r) for r in rows) + 1
rows = [r.ljust(J) for r in rows]
ops = rows.pop()
s = 0
for ows in re.findall(r"(\S\s+)", ops):
o, *ws = ows
e = s + len(ws)
col = [ns for ns in [r[s:e] for r in rows]]
s += len(ows)
col1 = [int(r) for r in col]
col2 = [int("".join([nsc for nsc in ns if nsc.isdigit()])) for ns in zip(*col)]
match o:
case "*":
p1 += prod(col1)
p2 += prod(col2)
case "+":
p1 += sum(col1)
p2 += sum(col2)
return p1, p2
if __name__ == "__main__":
with open("./input/06.txt", "r") as f:
inp = f.read().strip()
p1, p2 = solve(inp)
print(p1)
print(p2)
assert p1 == 5524274308182
assert p2 == 8843673199391