advent_of_code/25/2/main.py
2025-12-02 08:24:01 -06:00

49 lines
1.2 KiB
Python

'''AoC Day 2'''
import re
def part1(range_list: list) -> int:
'''Part 1'''
total = 0
for id_range in range_list:
for x in range(int(id_range[0]), int(id_range[1]) + 1):
if not check_valid_id(str(x)):
total += x
return total
def part2(range_list: list) -> int:
'''Part 2'''
total = 0
for id_range in range_list:
for x in range(int(id_range[0]), int(id_range[1]) + 1):
if not check_extended_id(str(x)):
total += x
return total
def check_valid_id(id: str) -> bool:
'''Checks a given ID for validity using the silly rules, only one repeat'''
return re.fullmatch(r'(.*?)\1', id) is None
def check_extended_id(id: str) -> bool:
'''Checks for extended rule checking, at least one repeats'''
return re.fullmatch(r'(.*?)\1+', id) is None
def main():
'''Entrypoint'''
with open('input.txt', encoding='utf-8') as fh:
range_list = [(y[0].strip(), y[1].strip()) for y in (x.split('-') for x in fh.readline().split(','))]
total = part1(range_list)
print(f'Part1: {total}')
total2 = part2(range_list)
print(f'Part2: {total2}')
if __name__ == "__main__":
main()