diff --git a/2025/ruby/day_03.rb b/2025/ruby/day_03.rb
index 374329f..9753d0d 100644
--- a/2025/ruby/day_03.rb
+++ b/2025/ruby/day_03.rb
@@ -1,10 +1,22 @@
+Bank = Data.define(:batteries) do
+ def joltage(n)
+ battery = batteries[0..-n].max
+ index = batteries.index(battery)
+
+ if n > 1
+ battery.to_s + Bank.new(batteries[index+1..]).joltage(n-1)
+ else
+ battery.to_s
+ end
+ end
+end
+
banks = DATA.read.lines(chomp: true)
.map { it.chars.map(&:to_i) }
+ .map { Bank.new(it) }
pp banks.map {|bank|
- a = bank[0..-2].max
- i = bank.index(a)
- [a, bank[i+1..].max].join.to_i
+ bank.joltage(12).to_i
}.sum
__END__