day 2
This commit is contained in:
57
2025/02/solution.py
Executable file
57
2025/02/solution.py
Executable 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()
|
||||
Reference in New Issue
Block a user