Files
aocpy/2025/d02.py
2025-12-14 10:36:32 -05:00

35 lines
812 B
Python

from lib import get_data
data = get_data(__file__)
def is_invalid(xs: str) -> bool:
for seq_len in range(1, len(xs) // 2 + 1):
if xs[:seq_len] == xs[seq_len:]:
return True
return False
def is_invalid2(xs: str) -> bool:
for seq_len in range(1, len(xs)):
if len(xs) % seq_len != 0:
continue
for repeat in range(len(xs) // seq_len):
i = seq_len * repeat
if xs[:seq_len] != xs[i:i + seq_len]:
break
else:
return True
return False
r1, r2 = 0, 0
for id_range in data.split(","):
lo, up = list(map(int, id_range.split("-")))
for id in range(lo, up + 1):
if is_invalid(str(id)):
r1 += id
if is_invalid2(str(id)):
r2 += id
print(r1)
print(r2)