22 lines
586 B
Python
22 lines
586 B
Python
import aocd
|
|
|
|
def parse(data):
|
|
for range_ in data.strip().split(','):
|
|
yield range_.split('-')
|
|
|
|
def num_invalid(low, high):
|
|
low_int, high_int = int(low), int(high)
|
|
|
|
for id in map(str, range(low_int, high_int+1)):
|
|
if len(id) % 2: continue
|
|
if id[:len(id)//2] == id[len(id)//2:]:
|
|
yield int(id)
|
|
|
|
def main(data):
|
|
ranges = parse(data)
|
|
return sum(sum(num_invalid(*r)) for r in ranges)
|
|
|
|
if __name__ == '__main__':
|
|
solution = main(aocd.get_data(day=2, year=2025))
|
|
print(solution)
|
|
aocd.submit(solution, part='a', day=2, year=2025) |