Digital root/Multiplicative digital root: Difference between revisions

Line 1,111:
 
=={{header|Ruby}}==
<lang ruby>def dig_root_prodmdroot(n)
drp mdr, persist = n, 0
until drpmdr < 10 do
drpmdr = drpmdr.to_s.each_char.map(&:to_i).inject(&:*)
persist += 1
end
[drpmdr, persist]
end
 
puts "InputNumber: MDR MP", "====== drp=== persistence =="
[123321, 7739, 893, 899998].each{|n| puts "#{n.to_s.ljust(8)}%6d: #{dig_root_prod(n).join(' %d '%2d" % [n, *mdroot(n)}"]}
 
puts
counter = Hash.new{|h,k| h[k]=[]}
0.step do |i|
counter[dig_root_prodmdroot(i).first] << i
break if counter.values.all?{|v| v.size >= 5 }
end
puts "", "MDR: [n0..n4]", "=== ========"
counter.values.each{|dp| puts dp.first(5).join(", ")}</lang>
10.times{|i| puts "%3d: %p" % [i, counter[i].first(5)]}</lang>
{{out}}
<pre>
Number: MDR MP
Input drp persistence
123321====== :=== 8 3==
7739123321: : 8 3
893 7739: : 28 3
899998 893: 0 2 2 3
899998: 0 2
 
MDR: [n0..n4]
0, 10, 20, 25, 30
=== ========
1, 11, 111, 1111, 11111
2 0: [0, 1210, 2120, 2625, 3430]
3 1: [1, 1311, 31111, 1131111, 13111111]
4 2: [2, 1412, 2221, 2726, 3934]
5 3: [3, 1513, 3531, 51113, 53131]
6 4: [4, 1614, 2322, 2827, 3239]
7 5: [5, 1715, 7135, 11751, 17153]
8 6: [6, 1816, 2423, 2928, 3632]
9 7: [7, 1917, 3371, 91117, 119</pre>171]
8: [8, 18, 24, 29, 36]
9: [9, 19, 33, 91, 119]
</pre>
 
=={{header|Scala}}==
Anonymous user