feat: day3.2
This commit is contained in:
parent
27f4c36b59
commit
ed36575ad2
1 changed files with 25 additions and 17 deletions
|
|
@ -1,28 +1,36 @@
|
||||||
def get_max_joltage(batteries: [str], last_index: int = -1) -> (int, int):
|
def get_largest_n_digit(batteries: str, n: int) -> str:
|
||||||
max = 0
|
digits = [c for c in batteries if c.isdigit()]
|
||||||
max_index = -1
|
|
||||||
last_is_last = last_index == (len(batteries)-1)
|
|
||||||
for i, battery in enumerate(batteries):
|
|
||||||
battery_value = int(battery)
|
|
||||||
if battery_value > max and ((last_is_last and i != last_index) or i > last_index):
|
|
||||||
max = battery_value
|
|
||||||
max_index = i
|
|
||||||
|
|
||||||
return max_index, max
|
to_remove = len(digits) - n
|
||||||
|
result = digits[:]
|
||||||
|
|
||||||
|
for _ in range(to_remove):
|
||||||
|
for i in range(len(result) - 1):
|
||||||
|
if result[i] < result[i + 1]:
|
||||||
|
result.pop(i)
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
result.pop()
|
||||||
|
|
||||||
|
return ''.join(result)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
with open("input.txt", "r") as f:
|
with open("input.txt", "r") as f:
|
||||||
banks = f.read().split('\n')
|
banks = f.read().split('\n')
|
||||||
|
|
||||||
total_joltage = 0
|
part1_total = 0
|
||||||
|
part2_total = 0
|
||||||
|
|
||||||
for batteries in banks:
|
for batteries in banks:
|
||||||
f_i, first_max = get_max_joltage(batteries)
|
if not batteries:
|
||||||
s_i, second_max = get_max_joltage(batteries, f_i)
|
continue
|
||||||
|
|
||||||
if f_i == len(batteries)-1:
|
# part1_total += int((str(first_max)+str(second_max)))
|
||||||
first_max, second_max = second_max, first_max
|
part1_total += int(get_largest_n_digit(batteries, 2))
|
||||||
|
|
||||||
total_joltage += int((str(first_max)+str(second_max)))
|
# Part 2: largest 12 digits
|
||||||
|
part2_total += int(get_largest_n_digit(batteries, 12))
|
||||||
|
|
||||||
print(total_joltage)
|
print(f"Part 1: {part1_total}")
|
||||||
|
print(f"Part 2: {part2_total}")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue