Do day 3 and 4 for 2025
This commit is contained in:
35
2025/d03.py
Normal file
35
2025/d03.py
Normal file
@@ -0,0 +1,35 @@
|
||||
from lib import get_data
|
||||
|
||||
data = get_data(__file__)
|
||||
|
||||
|
||||
def max_joltage(xs: str, target_len: int) -> int:
|
||||
def dynamic(xs: str) -> dict[int, str]:
|
||||
if len(xs) == 0:
|
||||
return {0: ""}
|
||||
|
||||
rs = dynamic(xs[1:])
|
||||
for i in range(target_len, 0, -1):
|
||||
if not (i - 1) in rs:
|
||||
continue
|
||||
nv = int(xs[0] + rs[i - 1])
|
||||
if not i in rs:
|
||||
rs[i] = str(nv)
|
||||
elif nv > int(rs[i]):
|
||||
rs[i] = str(nv)
|
||||
return rs
|
||||
|
||||
rs = dynamic(xs)
|
||||
return int(rs[target_len])
|
||||
|
||||
|
||||
r1 = 0
|
||||
r2 = 0
|
||||
for line in data.splitlines():
|
||||
r1 += max_joltage(line, 2)
|
||||
r2 += max_joltage(line, 12)
|
||||
|
||||
|
||||
print(r1)
|
||||
print(r2)
|
||||
|
||||
Reference in New Issue
Block a user