Skip to content

Commit 6805ddb

Browse files
committed
Completed day 3 of year 2025
1 parent 9397b9e commit 6805ddb

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

2025/3.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
4+
split_data = True
5+
completed = True
6+
raw_data = None # Not To be touched
7+
8+
def part1(data):
9+
total = 0
10+
for bank in data:
11+
battery = [int(joltage) for joltage in bank]
12+
13+
# Find the largest first unit that is the most left...
14+
max_f = -1
15+
max_i = -1
16+
for i, j in enumerate(battery[:-1]):
17+
if j > max_f:
18+
max_i, max_f = i, j
19+
# Next find the second largest on the right hand side and we are done
20+
total += max_f * 10 + max(battery[max_i+1:])
21+
22+
return total
23+
24+
def argmax(array:list) -> int:
25+
best = -1
26+
best_i = -1
27+
28+
for i, j in enumerate(array):
29+
if j > best:
30+
best_i, best = i, j
31+
32+
return best_i
33+
34+
35+
def part2(data):
36+
# Same logic as above, simply extended
37+
38+
total = 0
39+
for bank in data:
40+
bank = [int(joltage) for joltage in bank]
41+
digits = 11 # extra digits remaining
42+
i = -1
43+
final_joltage = 0
44+
while digits >= 0:
45+
num = argmax(bank[i+1:-digits] if digits != 0 else bank[i+1:])
46+
i += num+1
47+
final_joltage = final_joltage * 10 + bank[i]
48+
digits -= 1
49+
total += final_joltage
50+
51+
return total

0 commit comments

Comments
 (0)