This repository has been archived on 2025-12-22. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
aoc2025/day5/main.py
2025-12-07 16:08:05 +01:00

41 lines
1.2 KiB
Python

with open("day5/input.txt") as file:
data = file.readlines()
safeFood = []
maybeRotten = []
for index, item in enumerate(data):
if(item == "\n"):
print(f"At index {index} is space")
safeFood = [value.strip("\n") for value in data[:index]]
maybeRotten = [int(value.strip("\n")) for value in data[index+1:]]
safeRanges = []
for safeRange in safeFood:
safeRanges.append([int(number) for number in safeRange.split("-")])
safeFoodNumber = 0
for item in maybeRotten:
for ranges in safeRanges:
if((ranges[0] <= item) and (item <= ranges[1])):
safeFoodNumber+=1
break
# 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}")