Solve 2025 day 5 pt 1-2

Part 2 was too hard for me, since I initially worked
with range(s, e). It quickly became out of hand.

A funnel method was instead used.
This commit is contained in:
Anders Englöf Ytterström 2025-12-05 08:27:05 +01:00 committed by Anders Englöf Ytterström
parent ac6b97590c
commit 2d3caced7f

View file

@ -0,0 +1,31 @@
from output import ints
def solve(data):
p1 = None
p2 = 0
ranges, ids = data.split("\n\n")
ids = ints(ids)
R = [ints(line) for line in ranges.split()]
p1 = sum(any(s <= n <= e for s, e in R) for n in ids)
c = 0
for s, e in sorted(R):
s = max(c + 1, s)
if s <= e:
p2 += e - s + 1
c = max(e, c)
return p1, p2
if __name__ == "__main__":
with open("./input/05.txt", "r") as f:
inp = f.read().strip()
p1, p2 = solve(inp)
print(p1)
print(p2)
assert p1 == 509
assert p2 == 336790092076620