Skip to content

Commit 0ddf902

Browse files
committed
Completed day 5 of year 2025
1 parent 1aeca73 commit 0ddf902

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

2025/5.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
split_data = '\n\n'
5+
completed = True
6+
raw_data = None # Not To be touched
7+
8+
def part1(data):
9+
fresh_ranges = data[0].split('\n')
10+
fresh_ranges = [[int(r) for r in x.split('-')] for x in fresh_ranges]
11+
ingredient_ids = [int(ing_id) for ing_id in data[1].split('\n')]
12+
13+
return sum(any(r[0] <= ing_id <= r[1] for r in fresh_ranges) for ing_id in ingredient_ids)
14+
15+
def part2(data):
16+
fresh_ranges = data[0].split('\n')
17+
fresh_ranges = [[int(r) for r in x.split('-')] for x in fresh_ranges]
18+
19+
evolved = True
20+
new_ranges = []
21+
while evolved:
22+
# print(fresh_ranges)
23+
for r1l, r1h in fresh_ranges:
24+
for i in range(len(new_ranges)):
25+
r2l, r2h = new_ranges[i]
26+
# Check for intersection...
27+
if (r1l <= r2l <= r1h) or (r1l <= r2h <= r1h) or (r2l <= r1l <= r2h) or (r2l <= r1h <= r2h):
28+
new_ranges[i] = [min(r1l, r2l), max(r1h, r2h)]
29+
break
30+
else:
31+
new_ranges.append([r1l, r1h])
32+
33+
evolved = len(new_ranges) != len(fresh_ranges)
34+
fresh_ranges = new_ranges
35+
new_ranges = []
36+
37+
# # We can run an assertation check...
38+
# for i1 in range(len(fresh_ranges)):
39+
# for i2 in range(i1 + 1, len(fresh_ranges)):
40+
# r1l, r1h = fresh_ranges[i1]
41+
# r2l, r2h = fresh_ranges[i2]
42+
# assert not ((r1l <= r2l <= r1h) or (r1l <= r2h <= r1h)), f"{fresh_ranges[i1]}, {fresh_ranges[i2]}"
43+
44+
return sum((r[1] + 1 - r[0]) for r in fresh_ranges)

0 commit comments

Comments
 (0)