Evaluate binomial coefficients: Difference between revisions

Content added Content deleted
(Added Quackery.)
Line 432: Line 432:
The Windows cmd console only handles 32-bit integers. If a factoral exceeds 2147483647 at any point, <code>set /a</code> will choke and roll over to a negative value, giving unexpected results. Unfortunately, this is as good as it gets for pure batch.
The Windows cmd console only handles 32-bit integers. If a factoral exceeds 2147483647 at any point, <code>set /a</code> will choke and roll over to a negative value, giving unexpected results. Unfortunately, this is as good as it gets for pure batch.


=={{header|BCPL}}==
<lang BCPL>
GET "libhdr"

LET choose(n, k) =
~(0 <= k <= n) -> 0,
2*k > n -> binomial(n, n - k),
binomial(n, k)

AND binomial(n, k) =
k = 0 -> 1,
binomial(n, k - 1) * (n - k + 1) / k

LET start() = VALOF {
LET n, k = ?, ?
LET argv = VEC 20
LET sz = ?

sz := rdargs("n/a/n/p,k/a/n/p", argv, 20)
UNLESS sz ~= 0 RESULTIS 1

n := !argv!0
k := !argv!1

writef("%d choose %d = %d *n", n, k, choose(n, k))
RESULTIS 0
}
</lang>
{{Out}}
Note that with the /p flag to rdargs(), the system will prompt if we don't supply both arguments on the command line.
<pre>
$ cintsys64

BCPL 64-bit Cintcode System (13 Jan 2020)
0.004> nCk 50 25
50 choose 25 = 126410606437752
0.003> nCk 10 5
10 choose 5 = 252
0.004> nCk 100 2
100 choose 2 = 4950
0.004> nCk
n > 5
k > 3
5 choose 3 = 10
</pre>
=={{header|BBC BASIC}}==
=={{header|BBC BASIC}}==
<lang bbcbasic> @%=&1010
<lang bbcbasic> @%=&1010