Combinations and permutations: Difference between revisions

m
(added scheme example)
m (→‎{{header|Sidef}}: updated code)
Line 1,570:
=={{header|Sidef}}==
{{trans|Perl 6}}
<lang ruby>func P(n, k) { n! / ((n-k)!) };
func C(n, k) { binomial(n, k) };
 
class Logarithm(value) {
method get_value { value };
method to_s {
var e = int(value/10.log);
"%.8fE%+d" % (exp(value - e*10.log), e);
}
}
 
func lstirling(n) {
n < 10  ? (lstirling(n+1) - log(n+1))
 : (0.5*log(2*NumberNum.pi*n) + n*log(n/NumberNum.e + 1/(12*NumberNum.e*n)));
}
 
Line 1,594 ⟶ 1,593:
}
 
say "=> Exact results:";
rangefor n (1, ..12).each { |n|
var p = int(n / /3);
say "P(#{n}, #{p}) = #{P(n, p)}";
}
 
rangefor n (10, ..60, `by` 10).each { |n|
var p = int(n / /3);
say "C(#{n}, #{p}) = #{C(n, p)}";
}
 
say '';
say "=> Floating point approximations:";
for n ([5, 50, 500, 1000, 5000, 15000].each) { |n|
var p = int(n / /3);
say "P(#{n}, #{p}) = #{P_approx(n, p)}";
}
 
rangefor n (100, ..1000, `by` 100).each { |n|
var p = int(n / /3);
say "C(#{n}, #{p}) = #{C_approx(n, p)}";
}</lang>
{{out}}
2,756

edits