Files
aoc2025/02/02.py
T
2025-12-02 12:44:27 +03:00

45 lines
937 B
Python

F = "input"
data = open(F).read().strip().split(",")
data = [(int(y[0]), int(y[1])) for x in data if (y := x.split("-"))]
data = sorted(data)
m = max(data, key=lambda x: x[1])[1]
def part1(data):
c = 0
for i in range(1, int("9" * (len(str(m)) // 2)) + 1):
x = int(str(i) * 2)
for a, b in data:
if x in range(a, b + 1):
c += x
return c
def part2(data):
nums = []
for i in range(2, len(str(m)) + 1):
j = 1
n = int(str(j) * i)
while n <= m:
nums.append(n)
j += 1
n = int(str(j) * i)
nums = sorted(nums)
i = 0
c = set()
for n in nums:
while n > data[i][1]:
i += 1
j = i
while j < len(data) and n <= data[j][1]:
if data[j][0] <= n <= data[j][1]:
c.add(n)
j += 1
return sum(c)
print(part1(data))
print(part2(data))