Evaluate binomial coefficients: Difference between revisions

Content added Content deleted
m (Phix/mpfr)
(Added Wren)
Line 2,688: Line 2,688:
{{Out}}
{{Out}}
<pre>the binomial coefficient of 5 and 3 = 10</pre>
<pre>the binomial coefficient of 5 and 3 = 10</pre>

=={{header|Wren}}==
{{libheader|Wren-fmt}}
{{libheader|Wren-math}}
<lang ecmascript>import "/fmt" for Fmt
import "/math" for Int

var binomial = Fn.new { |n, k|
if (n < 0 || k < 0) Fiber.abort("Arguments must be non-negative integers")
if (n < k) Fiber.abort("The second argument cannot be more than the first.")
if (n == k) return 1
var prod = 1
var i = n - k + 1
while (i <= n) {
prod = prod * i
i = i + 1
}
return prod / Int.factorial(k)
}

var limit = 14
System.write("n/k |")
for (k in 0..limit) System.write(Fmt.d(5, k))
System.print()
System.write("----+" + "-----" * (limit + 1))
System.print()
for (n in 0..limit) {
System.write("%(Fmt.d(3, n)) |")
for (k in 0..n) System.write(Fmt.d(5, binomial.call(n, k)))
System.print()
}</lang>

{{out}}
<pre>
n/k | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
----+---------------------------------------------------------------------------
0 | 1
1 | 1 1
2 | 1 2 1
3 | 1 3 3 1
4 | 1 4 6 4 1
5 | 1 5 10 10 5 1
6 | 1 6 15 20 15 6 1
7 | 1 7 21 35 35 21 7 1
8 | 1 8 28 56 70 56 28 8 1
9 | 1 9 36 84 126 126 84 36 9 1
10 | 1 10 45 120 210 252 210 120 45 10 1
11 | 1 11 55 165 330 462 462 330 165 55 11 1
12 | 1 12 66 220 495 792 924 792 495 220 66 12 1
13 | 1 13 78 286 715 1287 1716 1716 1287 715 286 78 13 1
14 | 1 14 91 364 1001 2002 3003 3432 3003 2002 1001 364 91 14 1
</pre>


=={{header|XPL0}}==
=={{header|XPL0}}==