This commit is contained in:
2025-12-02 19:38:18 -05:00
parent 8c047db9e5
commit 4a19fcc938
2 changed files with 58 additions and 0 deletions

57
2025/02/solution.py Executable file
View File

@@ -0,0 +1,57 @@
#!/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()