RosettaCodeData/Task/Digital-root-Multiplicative.../Ruby/digital-root-multiplicative...

20 lines
505 B
Ruby

def mdroot(n)
mdr, persist = n, 0
until mdr < 10 do
mdr = mdr.to_s.each_char.map(&:to_i).inject(:*)
persist += 1
end
[mdr, persist]
end
puts "Number: MDR MP", "====== === =="
[123321, 7739, 893, 899998].each{|n| puts "%6d: %d %2d" % [n, *mdroot(n)]}
counter = Hash.new{|h,k| h[k]=[]}
0.step do |i|
counter[mdroot(i).first] << i
break if counter.values.all?{|v| v.size >= 5 }
end
puts "", "MDR: [n0..n4]", "=== ========"
10.times{|i| puts "%3d: %p" % [i, counter[i].first(5)]}