28 lines
652 B
Ruby
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
|