Add tasks for all the new languages

This commit is contained in:
Tina Müller 2016-12-05 23:44:36 +01:00
parent 9dc3c2bb62
commit bba7bfd280
13208 changed files with 134745 additions and 0 deletions

View file

@ -0,0 +1,46 @@
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*Number.pi*n) + n*log(n/Number.e + 1/(12*Number.e*n)));
}
func P_approx(n, k) {
Logarithm((lstirling(n) - lstirling(n -k)))
}
func C_approx(n, k) {
Logarithm((lstirling(n) - lstirling(n -k) - lstirling(k)))
}
say "=> Exact results:";
range(1, 12).each { |n|
var p = int(n / 3);
say "P(#{n}, #{p}) = #{P(n, p)}";
}
range(10, 60, 10).each { |n|
var p = int(n / 3);
say "C(#{n}, #{p}) = #{C(n, p)}";
}
say '';
say "=> Floating point approximations:";
[5, 50, 500, 1000, 5000, 15000].each { |n|
var p = int(n / 3);
say "P(#{n}, #{p}) = #{P_approx(n, p)}";
}
range(100, 1000, 100).each { |n|
var p = int(n / 3);
say "C(#{n}, #{p}) = #{C_approx(n, p)}";
}