So far so good. Finding invalid id’s (sequences of repeated numbers, eg. 123123) using brute force and awkward string manipulation.
Remembered that “awkward string manipulation” is usually a good flag for regex. Fired up my regex generator (AKA ChatGPT). Boom. Done.
def getInvalidIdSum(rangeBounds, part2Flag):
invalidIdSum = 0
for id in range(int(rangeBounds[0]), int(rangeBounds[1]) + 1):
if (re.fullmatch(r"^(\d+)\1+$" if part2Flag else r"^(.+?)\1$", str(id))):
invalidIdSum += int(str(id))
return invalidIdSum
