Humble numbers: Difference between revisions
Content added Content deleted
Line 2,712: | Line 2,712: | ||
===Orders of magnitude faster=== |
===Orders of magnitude faster=== |
||
Generate humble numbers directly |
Generate humble numbers directly. |
||
{{trans|Zkl}} |
{{trans|Zkl}} |
||
<lang ruby>def humble(digits) |
<lang ruby>def humble(digits) |
||
Line 2,719: | Line 2,719: | ||
i, j, k, l = 0, 0, 0, 0 |
i, j, k, l = 0, 0, 0, 0 |
||
n = 0 |
n = 0 |
||
while n += 1 # ruby |
while n += 1 # ruby => 2.6: (1..).each do |n| |
||
x = [x2, [x3, [x5, x7].min].min].min |
x = [x2, [x3, [x5, x7].min].min].min |
||
break if x.to_s.size > digits |
break if x.to_s.size > digits |
||
Line 2,734: | Line 2,734: | ||
h = humble(digits) # humble numbers <= digits size |
h = humble(digits) # humble numbers <= digits size |
||
count = h.size # the total humble numbers count |
count = h.size # the total humble numbers count |
||
counts = h.map { |n| n.to_s.size }.tally |
#counts = h.map { |n| n.to_s.size }.tally # hash of digits counts 1..digits: Ruby => 2.7 |
||
counts = h.map { |n| n.to_s.size }.group_by(&:itself).transform_values(&:size) # Ruby => 2.4 |
|||
print "First 50 Humble Numbers: \n"; (0...50).each { |i| print "#{h[i]} " } |
print "First 50 Humble Numbers: \n"; (0...50).each { |i| print "#{h[i]} " } |
||
print "\n\nOf the first #{count} humble numbers:\n" |
print "\n\nOf the first #{count} humble numbers:\n" |