Anonymous user
Evaluate binomial coefficients: Difference between revisions
no edit summary
(Add Seed7 example) |
No edit summary |
||
Line 1,548:
{{Out}}
<pre><10,118264581564861424></pre>
=={{header|Windows Batch}}==
<lang dos>@echo off & setlocal
if "%~2"=="" ( echo Usage: %~nx0 n k && goto :EOF )
call :binom binom %~1 %~2
1>&2 set /P "=%~1 choose %~2 = "<NUL
echo %binom%
goto :EOF
:binom <var_to_set> <N> <K>
setlocal
set /a coeff=1, nk=%~2 - %~3 + 1
for /L %%I in (%nk%, 1, %~2) do set /a coeff *= %%I
for /L %%I in (1, 1, %~3) do set /a coeff /= %%I
endlocal && set "%~1=%coeff%"
goto :EOF</lang>
{{Out}}
<pre>
> binom.bat 5 3
5 choose 3 = 10
> binom.bat 100 2
100 choose 2 = 4950
</pre>
The string <code>n choose k = </code> is output to stderr, while the result is echoed to stdout. This should allow capturing the result with a <code>for /f</code> loop without needing to define tokens or delims.
But...
<pre>
> binom.bat 33 17
33 choose 17 = 0
> binom.bat 15 10
15 choose 10 = -547
</pre>
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. It's probably better to employ a PowerShell or JScript helper or similar instead.
=={{header|XPL0}}==
|