#!/usr/bin/env python3 import sys import pathlib def read_input(): path = pathlib.Path(sys.argv[1]) if len(sys.argv) > 1 else pathlib.Path("input.txt") return path.read_text().replace(",", "\n").rstrip("\n") def parse(data): return data.splitlines() def part1(data): sum=0 for ids in data: buf = ids.split("-") start = int(buf[0]) end = int(buf[1]) for i in range(start, end + 1): s = str(i) length = len(s) if length % 2 == 0: mid = len(s) // 2 first = s[:mid] rest = s[mid:] if first == rest: sum += i return sum def part2(data): sum = 0 for ids in data: start, end = map(int, ids.split("-")) for i in range(start, end + 1): numstr = str(i) invalid = False for c in range(1, len(numstr)//2 + 1): if len(numstr) % c != 0: continue chunks = [numstr[j:j+c] for j in range(0, len(numstr), c)] if all(chunks[0] == chunks[k] for k in range(1, len(chunks))): invalid = True break if invalid: sum += i return sum def main(): raw = read_input() data = parse(raw) r1 = part1(data) r2 = part2(data) print(r1) print(r2) if __name__ == "__main__": main()