Skip to content

Commit 9014532

Browse files
committed
refactor for geneeral n_batteries case
1 parent 6611c8c commit 9014532

File tree

2 files changed

+9
-29
lines changed

2 files changed

+9
-29
lines changed

src/advent_of_code/year_2025/day_03.py

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def combine_joltages(list_of_joltages):
88
return int("".join([str(x) for x in list_of_joltages]))
99

1010

11-
def calculate_largest_joltage(battery_bank_as_ints):
11+
def calculate_largest_joltage(battery_bank_as_ints, n_batteries):
1212
largest_joltage_1 = 0
1313

1414
for battery_index, battery_value in enumerate(battery_bank_as_ints):
@@ -22,31 +22,19 @@ def calculate_largest_joltage(battery_bank_as_ints):
2222
return combine_joltages([largest_joltage_1, largest_joltage_2])
2323

2424

25-
def calculate_largest_joltage_part_2(battery_bank_as_ints, n_batteries=12):
26-
sorted_batteries = sorted(battery_bank_as_ints, reverse=True)
27-
return combine_joltages(sorted_batteries[:n_batteries])
28-
29-
30-
def solve_part(input, part=1):
25+
def solve_part(input, n_batteries):
3126
joltage_list = []
3227

33-
if part == 1:
34-
calculate_largest_joltage_function = calculate_largest_joltage
35-
elif part == 2:
36-
calculate_largest_joltage_function = calculate_largest_joltage_part_2
37-
else:
38-
raise ValueError("Part must be 1 or 2")
39-
4028
for battery_bank_str in input:
4129
battery_bank_as_ints = parse_battery_bank_to_ints_list(battery_bank_str)
42-
largest_joltage = calculate_largest_joltage_function(battery_bank_as_ints)
30+
largest_joltage = calculate_largest_joltage(battery_bank_as_ints, n_batteries)
4331
joltage_list.append(largest_joltage)
4432

4533
return sum(joltage_list)
4634

4735
def solve(input):
48-
part_1_solution = solve_part(input, part=1)
49-
part_2_solution = solve_part(input, part=2)
36+
part_1_solution = solve_part(input, n_batteries=2)
37+
part_2_solution = solve_part(input, n_batteries=12)
5038
return (part_1_solution, part_2_solution)
5139

5240

tests/year_2025/test_day_03.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
calculate_largest_joltage,
66
parse_battery_bank_to_ints_list,
77
combine_joltages,
8-
calculate_largest_joltage_part_2,
98
)
109

1110

@@ -29,7 +28,6 @@ def test_solver(day_03_test_input, day_03_expected_output):
2928
assert result == day_03_expected_output
3029

3130

32-
3331
@pytest.fixture
3432
def test_calculate_largest_joltage_params():
3533
return [
@@ -39,17 +37,11 @@ def test_calculate_largest_joltage_params():
3937
("818181911112111", 92, 888911112111),
4038
]
4139

42-
def test_calculate_largest_joltage_part_1(test_calculate_largest_joltage_params):
43-
for input_str, expected_output, _ in test_calculate_largest_joltage_params:
40+
def test_calculate_largest_joltage(test_calculate_largest_joltage_params):
41+
for input_str, expected_output_part_1, expected_output_part_2 in test_calculate_largest_joltage_params:
4442
parsed_inputs = parse_battery_bank_to_ints_list(input_str)
45-
assert expected_output == calculate_largest_joltage(parsed_inputs)
46-
47-
48-
def test_calculate_largest_joltage_part_2(test_calculate_largest_joltage_params):
49-
for input_str, _, expected_output in test_calculate_largest_joltage_params:
50-
parsed_inputs = parse_battery_bank_to_ints_list(input_str)
51-
assert expected_output == calculate_largest_joltage_part_2(parsed_inputs)
52-
43+
assert expected_output_part_1 == calculate_largest_joltage(parsed_inputs, n_batteries=2)
44+
assert expected_output_part_2 == calculate_largest_joltage(parsed_inputs, n_batteries=12)
5345

5446
def test_parse_battery_bank_to_ints_list():
5547
assert parse_battery_bank_to_ints_list("98765") == [9,8,7,6,5]

0 commit comments

Comments
 (0)