My 2025 Attempts
Day 1
Part 1
import os
import numpy as np
input = open(os.path.join("2025", "day_01", "input_day01.txt")).read().splitlines()
def part1(input):
input = [x.replace("L", "-") if "L" in x else x.replace("R", "+") for x in input]
rotations = 50 + np.cumsum([int(x) for x in input])
dial_number = [
x - (int(x / 100) * 100) if (np.abs(x) > 99) else x for x in rotations
]
n_zero = int(sum([x + 1 for x in dial_number if x == 0]))
return n_zero
print(part1(input))1195
0.005 seconds elapsed
Part 2
import os
import numpy as np
input = open(os.path.join("2025", "day_01", "input_day01.txt")).read().splitlines()
def part2(input):
instruction = [
int(x.replace("L", "-")) if "L" in x else int(x.replace("R", "+"))
for x in input
]
dial_number = 50
n_zero = 0
for x in instruction:
if x > 0:
n_zero += (dial_number + np.abs(x)) // 100
dial_number = (dial_number + np.abs(x)) % 100
else:
if dial_number == 0:
n_zero += np.abs(x) // 100
elif np.abs(x) >= dial_number:
n_zero += (np.abs(x) - dial_number) // 100 + 1
dial_number = (dial_number - np.abs(x)) % 100
return int(n_zero)
print(part2(input))6770
0.006 seconds elapsed
Day 2
Part 1
import os
input = open(os.path.join("2025", "day_02", "input_day02.txt")).read().split(",")
def part1(input):
id_ranges = [[int(x) for x in strings.split("-")] for strings in input]
valid_ids = []
for min_val, max_val in id_ranges:
values_in_range = [str(x) for x in list(range(min_val, max_val + 1))]
valid_ids = valid_ids + [
x for x in values_in_range if x[: int(len(x) / 2)] == x[int(len(x) / 2) :]
]
sum_of_valid = sum([int(x) for x in valid_ids])
return sum_of_valid
print(part1(input))44854383294
0.310 seconds elapsed
Part 2
import os
input = open(os.path.join("2025", "day_02", "input_day02.txt")).read().split(",")
def part2(input):
id_ranges = [[int(x) for x in strings.split("-")] for strings in input]
valid_ids = []
for min_val, max_val in id_ranges:
values_in_range = [str(x) for x in list(range(min_val, max_val + 1))]
valid_ids = valid_ids + [x for x in values_in_range if x in (x * 2)[1:-1]]
sum_of_valid = sum([int(x) for x in valid_ids])
return sum_of_valid
print(part2(input))55647141923
0.238 seconds elapsed
Day 3
Part 1
import os
input = open(os.path.join("2025", "day_03", "input_day03.txt")).read().splitlines()
def part1(input):
total_joltage = 0
for bank in input:
list_of_digits = [int(x) for x in bank]
max_joltage = 0
for i in range(len(list_of_digits)):
for j in range(i + 1, len(list_of_digits)):
max_joltage = max(
max_joltage, 10 * list_of_digits[i] + list_of_digits[j]
)
total_joltage += max_joltage
return total_joltage
print(part1(input))17179
0.029 seconds elapsed
Part 2
import os
input = open(os.path.join("2025", "day_03", "input_day03.txt")).read().splitlines()
def part2(input):
total_joltage = 0
for bank in input:
list_of_digits = [int(x) for x in bank]
joltage = [[0 for _ in range(12 + 1)] for _ in range(len(list_of_digits) + 1)]
for i in range(len(list_of_digits)):
for j in range(12 + 1):
joltage[i + 1][j] = max(joltage[i + 1][j], joltage[i][j])
if j < 12:
joltage[i + 1][j + 1] = max(
joltage[i + 1][j + 1], 10 * joltage[i][j] + list_of_digits[i]
)
total_joltage += joltage[len(list_of_digits)][12]
return total_joltage
print(part2(input))170025781683941
0.038 seconds elapsed
Day 4
Day 5
Part 1
import os
input = open(os.path.join("2025", "day_05", "input_day05.txt")).read()
def part1(input):
ing_ranges, ingr_ids = input.split("\n\n")
ing_ranges = [[int(y) for y in x.split("-")] for x in ing_ranges.splitlines()]
ingr_ids = [int(x) for x in ingr_ids.splitlines()]
fresh_ings = len(
set([x for x in ingr_ids for y in ing_ranges if (x >= y[0]) & (x <= y[1])])
)
return fresh_ings
print(part1(input))773
0.007 seconds elapsed
Part 2
import os
input = open(os.path.join("2025", "day_05", "input_day05.txt")).read()
def part2(input):
ing_ranges = input.split("\n\n")[0]
ing_ranges = sorted(
[[int(y) for y in x.split("-")] for x in ing_ranges.splitlines()]
)
fresh_ing_ids = []
for min_val, max_val in ing_ranges:
if not fresh_ing_ids or (fresh_ing_ids[-1][1] < min_val - 1):
fresh_ing_ids = fresh_ing_ids + [[min_val, max_val]]
else:
fresh_ing_ids[-1][1] = max(fresh_ing_ids[-1][1], max_val)
num_fresh_ings_ids = sum(
max_val - min_val + 1 for min_val, max_val in fresh_ing_ids
)
return num_fresh_ings_ids
print(part2(input))332067203034711
0.002 seconds elapsed