prog.sf 698 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #!/usr/bin/ruby
  2. # a(n) is the smallest number that requires at least n repdigits (not necessary distinct) to sum.
  3. # https://oeis.org/A336748
  4. # Known terms:
  5. # 1, 10, 21, 320, 2219, 32218, 332217, 3332216, 33332215
  6. var n = 6
  7. var limit = 32218
  8. var arr = []
  9. for k in (1..9) {
  10. for j in (1..limit.len) {
  11. arr << Num("#{k}"*j)
  12. }
  13. }
  14. arr = arr.grep { _ < limit }.uniq.sort
  15. var seen = Hash()
  16. for k in (1..n) {
  17. arr.combinations_with_repetition(k, {|*a|
  18. var t = a.sum
  19. if (seen.has(t)) {
  20. seen{t} = k if (k < seen{t})
  21. }
  22. else {
  23. seen{t} = k
  24. }
  25. })
  26. }
  27. var z = seen.grep_v{ _ == n }.keys.map{.to_n}.min
  28. say [z, seen{z}]