started 2025 day5 parts 1 & 2

This commit is contained in:
JISAUAY committed 2025-12-05 14:03:39 -06:00
1 parent 4fe4802afc
commit d5d846ab0c
12 files changed
+2927

No files matched your search

File diff suppressed because it is too large. Load diff
+35
View File
@@ -0,0 +1,35 @@
class iVec2d:
x: int
y: int
def __init__(self, x: int, y: int):
self.x = x
self.y = y
INPUT_FILE = "input.txt"
fresh_ranges: list[iVec2d] = []
available_ids: list[int] = []
# 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(iVec2d(int(n1), int(n2)))
for ingredient_id in ids.split("\n"):
available_ids.append(int(ingredient_id.strip()))
fresh_ingredients = 0
for ingredient_id in available_ids:
for fresh_range in fresh_ranges:
if ingredient_id >= fresh_range.x and ingredient_id <= fresh_range.y:
fresh_ingredients += 1
break
print(f'Fresh Ingredients: {fresh_ingredients}')
+11
View File
@@ -0,0 +1,11 @@
3-5
10-14
16-20
12-18
1
5
8
11
17
32
File diff suppressed because it is too large. Load diff
+43
View File
@@ -0,0 +1,43 @@
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}')
+13
View File
@@ -0,0 +1,13 @@
3-5
10-14
16-20
12-18
30-35
29-31
1
5
8
11
17
32