20 lines
365 B
Text
20 lines
365 B
Text
func armstrong_numbers(n, base=10) {
|
|
|
|
var D = @(^base)
|
|
var P = D.map {|d| d**n }
|
|
|
|
var list = []
|
|
|
|
D.combinations_with_repetition(n, {|*c|
|
|
var v = c.sum {|d| P[d] }
|
|
if (v.digits(base).sort == c) {
|
|
list.push(v)
|
|
}
|
|
})
|
|
|
|
list.sort
|
|
}
|
|
|
|
for n in (3..10) {
|
|
say ("For n = #{'%2d' % n}: ", armstrong_numbers(n))
|
|
}
|