day 2
This commit is contained in:
1
2025/02/input.txt
Normal file
1
2025/02/input.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
2200670-2267527,265-409,38866-50720,7697424-7724736,33303664-33374980,687053-834889,953123-983345,3691832-3890175,26544-37124,7219840722-7219900143,7575626241-7575840141,1-18,1995-2479,101904-163230,97916763-98009247,52011-79060,31-49,4578-6831,3310890-3365637,414256-608125,552-1005,16995-24728,6985-10895,878311-912296,59-93,9978301-10012088,17302200-17437063,1786628373-1786840083,6955834840-6955903320,983351-1034902,842824238-842861540,14027173-14217812
|
||||||
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