aoc_omni/ruby/2025/3/lib/battery_bank.rb

28 lines
652 B
Ruby

class BatteryBank
attr_reader :batteries
def initialize(batteries)
@batteries = batteries
end
def self.for(string)
new string.split("").map(&:to_i)
end
def joltage_for_batteries(num_batteries)
num_batteries.downto(1).reduce([[], 0]) do |acc, enabled_battery_index|
max_digit = batteries[(acc[1])..(-enabled_battery_index)].max
max_digit_index = batteries[(acc[1])..].find_index(max_digit)
[acc[0] + [max_digit], acc[1] + max_digit_index + 1]
end[0].map(&:to_s).join("").to_i
end
def maximum_joltage
joltage_for_batteries(2)
end
def override_joltage
joltage_for_batteries(12)
end
end