44 lines
1.1 KiB
Python
44 lines
1.1 KiB
Python
INPUT_FILE = "test.txt"
|
|
|
|
fresh_ranges: list = []
|
|
fresh_ids: set[int] = set()
|
|
|
|
# Parse data
|
|
with open(INPUT_FILE, 'r') as file:
|
|
data: str = file.read()
|
|
|
|
ranges, ids = data.split("\n\n")
|
|
|
|
for r in ranges.split("\n"):
|
|
n1, n2 = r.strip().split('-')
|
|
|
|
fresh_ranges.append(range(int(n1), int(n2)))
|
|
|
|
|
|
total_fresh_ids = 0
|
|
fresh_ranges_buffer = fresh_ranges.copy()
|
|
|
|
# Filter out overlaps
|
|
for fresh_range1 in fresh_ranges:
|
|
for fresh_range2 in fresh_ranges:
|
|
if fresh_range1 == fresh_range2:
|
|
continue
|
|
|
|
if fresh_range2.start in fresh_range1 or fresh_range2.stop in fresh_range1:
|
|
print(f'{fresh_range2} in {fresh_range1}')
|
|
|
|
if fresh_range2.start in fresh_range1 and fresh_range2.stop > fresh_range1.stop:
|
|
fresh_ranges_buffer.remove(fresh_range2)
|
|
total_fresh_ids += fresh_range2.stop - fresh_range1.start
|
|
new_range = range(fresh_range1.stop, fresh_range2.stop)
|
|
|
|
fresh_ranges_buffer.append(new_range)
|
|
|
|
total = 0
|
|
# sum ranges
|
|
for r in fresh_ranges_buffer:
|
|
print(r)
|
|
total += len(fresh_ranges_buffer) + 1
|
|
|
|
print(f'Fresh Ingredients: {total}')
|