Day 2 - Advent of Code 2025
2 December 2025
Working solutions for the day 2 puzzles.
Part One
""" day_02_01.py """
# usage: python3 day_02_01.py < input
import sys
with sys.stdin as infile:
ranges = infile.read().split(',')
ranges = [r.split('-') for r in ranges]
ranges = [[int(begin), int(end)] for begin, end in ranges]
def invalid(num):
""" sequence of digits repeated once """
text = str(num)
size = len(text)
if size % 2 == 1:
return False
mid = size // 2
return text[:mid] == text[mid:]
total = 0
for begin, end in ranges:
total += sum(filter(invalid, range(begin, end + 1)))
print(total)Part Two
""" day_02_02.py """
# usage: python3 day_02_02.py < input
import re
import sys
with sys.stdin as infile:
ranges = infile.read().split(',')
ranges = [r.split('-') for r in ranges]
ranges = [[int(begin), int(end)] for begin, end in ranges]
def invalid(num):
""" sequence of digits repeated once or more """
seq = re.compile(r'^(.*)\1+$')
return seq.match(str(num))
total = 0
for begin, end in ranges:
total += sum(filter(invalid, range(begin, end + 1)))
print(total)