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}')