Factorions: Difference between revisions
Content added Content deleted
(→{{header|Perl}}: added a more efficient version) |
m (→{{header|Sidef}}: minor code simplifications) |
||
Line 526: | Line 526: | ||
=={{header|Sidef}}== |
=={{header|Sidef}}== |
||
<lang ruby>func |
<lang ruby>func max_power(b = 10) { |
||
var m = 1 |
var m = 1 |
||
var f = (b-1)! |
var f = (b-1)! |
||
while (m*f > b**(m-1)) { |
while (m*f >= b**(m-1)) { |
||
m += 1 |
m += 1 |
||
} |
} |
||
return |
return m-1 |
||
} |
} |
||
Line 538: | Line 538: | ||
var result = [] |
var result = [] |
||
var digits = @ |
var digits = @^b |
||
var fact = digits.map { _! } |
var fact = digits.map { _! } |
||
for k in (1 .. |
for k in (1 .. max_power(b)) { |
||
digits.combinations_with_repetition(k, {|*comb| |
digits.combinations_with_repetition(k, {|*comb| |
||
var n = comb.sum_by { fact[_] } |
var n = comb.sum_by { fact[_] } |
||
if (n.digits(b).sort == comb |
if (n.digits(b).sort == comb) { |
||
result << n |
result << n |
||
} |
} |