StyleInCode

RSS

 

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)

Categories

Links