From 5c914f5b58518a34c6abe4355801f06960145775 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20T=C3=B3th?= Date: Sun, 7 Dec 2025 16:08:05 +0100 Subject: [PATCH] Day 6: Part 1 --- day5/main.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/day5/main.py b/day5/main.py index e0b071b..bfd2d57 100644 --- a/day5/main.py +++ b/day5/main.py @@ -23,6 +23,18 @@ for item in maybeRotten: safeFoodNumber+=1 break -print(safeRanges) -print(maybeRotten) -print(safeFoodNumber) +# merge intervals and count unique IDs without allocating every ID +merged = [] +for start, end in sorted(safeRanges, key=lambda r: r[0]): + if not merged or start > merged[-1][1] + 1: + merged.append([start, end]) + else: + merged[-1][1] = max(merged[-1][1], end) + +total_covered = sum(end - start + 1 for start, end in merged) +#print(total_covered) +# if you need the compact intervals for lookups later: safeRanges = merged + +#print(safeRanges) +#print(maybeRotten) +print(f"Part 1: {safeFoodNumber}\n\rPart 2: {total_covered}")