File tree Expand file tree Collapse file tree 1 file changed +51
-0
lines changed
Expand file tree Collapse file tree 1 file changed +51
-0
lines changed Original file line number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments