Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,32 +0,0 @@
|
|||
# calculate the first few catalan numbers, using LONG INT values #
|
||||
# (64-bit quantities in Algol 68G which can handle up to C23) #
|
||||
|
||||
# returns n!/k! #
|
||||
PROC factorial over factorial = ( INT n, k )LONG INT:
|
||||
IF k > n THEN 0
|
||||
ELIF k = n THEN 1
|
||||
ELSE # k < n #
|
||||
LONG INT f := 1;
|
||||
FOR i FROM k + 1 TO n DO f *:= i OD;
|
||||
f
|
||||
FI # factorial over factorial # ;
|
||||
|
||||
# returns n! #
|
||||
PROC factorial = ( INT n )LONG INT:
|
||||
BEGIN
|
||||
LONG INT f := 1;
|
||||
FOR i FROM 2 TO n DO f *:= i OD;
|
||||
f
|
||||
END # factorial # ;
|
||||
|
||||
# returnss the nth Catalan number using binomial coefficeients #
|
||||
# uses the factorial over factorial procedure for a slight optimisation #
|
||||
# note: Cn = 1/(n+1)(2n n) #
|
||||
# = (2n)!/((n+1)!n!) #
|
||||
# = factorial over factorial( 2n, n+1 )/n! #
|
||||
PROC catalan = ( INT n )LONG INT: IF n < 2 THEN 1 ELSE factorial over factorial( n + n, n + 1 ) OVER factorial( n ) FI;
|
||||
|
||||
# show the first few catalan numbers #
|
||||
FOR i FROM 0 TO 15 DO
|
||||
print( ( whole( i, -2 ), ": ", whole( catalan( i ), 0 ), newline ) )
|
||||
OD
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
|
||||
procedure Test_Catalan is
|
||||
function Catalan (N : Natural) return Natural is
|
||||
Result : Positive := 1;
|
||||
begin
|
||||
for I in 1..N loop
|
||||
Result := Result * 2 * (2 * I - 1) / (I + 1);
|
||||
end loop;
|
||||
return Result;
|
||||
end Catalan;
|
||||
begin
|
||||
for N in 0..15 loop
|
||||
Put_Line (Integer'Image (N) & " =" & Integer'Image (Catalan (N)));
|
||||
end loop;
|
||||
end Test_Catalan;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
catalan: function [n][
|
||||
if? n=0 -> 1
|
||||
else -> div (catalan n-1) * (4*n)-2 n+1
|
||||
switch n=0 -> 1
|
||||
-> div (catalan n-1) * (4*n)-2 n+1
|
||||
]
|
||||
|
||||
loop 0..15 [i][
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
--Catalan number task from Rosetta Code wiki
|
||||
--User:Lnettnay
|
||||
|
||||
--function from factorial task
|
||||
function factorial(integer n)
|
||||
atom f = 1
|
||||
while n > 1 do
|
||||
f *= n
|
||||
n -= 1
|
||||
end while
|
||||
|
||||
return f
|
||||
end function
|
||||
|
||||
function catalan(integer n)
|
||||
atom numerator = factorial(2 * n)
|
||||
atom denominator = factorial(n+1)*factorial(n)
|
||||
return numerator/denominator
|
||||
end function
|
||||
|
||||
for i = 0 to 15 do
|
||||
? catalan(i)
|
||||
end for
|
||||
|
|
@ -41,7 +41,7 @@ class Main
|
|||
|
||||
public static Void main ()
|
||||
{
|
||||
(1..15).each |n|
|
||||
(0..15).each |n|
|
||||
{
|
||||
echo (n.toStr.padl(4) +
|
||||
catalanA(n).toStr.padl(10) +
|
||||
|
|
|
|||
|
|
@ -1,40 +1,38 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #000080;font-style:italic;">-- returns inf/-nan for n>85, and needs the rounding for n>=14, accurate to n=29</span>
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">catalan1</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #7060A8;">floor</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">factorial</span><span style="color: #0000FF;">(</span><span style="color: #000000;">2</span><span style="color: #0000FF;">*</span><span style="color: #000000;">n</span><span style="color: #0000FF;">)/(</span><span style="color: #7060A8;">factorial</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)*</span><span style="color: #7060A8;">factorial</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">))+</span><span style="color: #000000;">0.5</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
with javascript_semantics
|
||||
-- returns inf/-nan for n>85, and needs the rounding for n>=14, accurate to n=29
|
||||
function catalan1(integer n)
|
||||
return round(factorial(2*n)/(factorial(n+1)*factorial(n)))
|
||||
end function
|
||||
|
||||
<span style="color: #000080;font-style:italic;">-- returns inf for n>519, accurate to n=30:</span>
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">catalan2</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- NB: very slow!</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #008080;">not</span> <span style="color: #000000;">n</span>
|
||||
<span style="color: #000000;">n</span> <span style="color: #0000FF;">-=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">to</span> <span style="color: #000000;">n</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">res</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">catalan2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)*</span><span style="color: #000000;">catalan2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">res</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
-- returns inf for n>519, accurate to n=30:
|
||||
function catalan2(integer n) -- NB: very slow!
|
||||
atom res = not n
|
||||
n -= 1
|
||||
for i=0 to n do
|
||||
res += catalan2(i)*catalan2(n-i)
|
||||
end for
|
||||
return res
|
||||
end function
|
||||
|
||||
<span style="color: #000080;font-style:italic;">-- returns inf for n>514, accurate to n=30:</span>
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">catalan3</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #000000;">1</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">2</span><span style="color: #0000FF;">*(</span><span style="color: #000000;">2</span><span style="color: #0000FF;">*</span><span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)/(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">+</span><span style="color: #000000;">n</span><span style="color: #0000FF;">)*</span><span style="color: #000000;">catalan3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
-- returns inf for n>514, accurate to n=30:
|
||||
function catalan3(integer n)
|
||||
if n=0 then return 1 end if
|
||||
return 2*(2*n-1)/(1+n)*catalan3(n-1)
|
||||
end function
|
||||
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">res</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">4</span><span style="color: #0000FF;">),</span><span style="color: #000000;">16</span><span style="color: #0000FF;">),</span>
|
||||
<span style="color: #000000;">times</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">3</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">4</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">t0</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">time</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">to</span> <span style="color: #000000;">15</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #008080;">switch</span> <span style="color: #000000;">t</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #008080;">case</span> <span style="color: #000000;">1</span><span style="color: #0000FF;">:</span> <span style="color: #000000;">res</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">][</span><span style="color: #000000;">2</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">catalan1</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">case</span> <span style="color: #000000;">2</span><span style="color: #0000FF;">:</span> <span style="color: #000000;">res</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">][</span><span style="color: #000000;">3</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">catalan2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">case</span> <span style="color: #000000;">3</span><span style="color: #0000FF;">:</span> <span style="color: #000000;">res</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">][</span><span style="color: #000000;">4</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">catalan3</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">case</span> <span style="color: #000000;">4</span><span style="color: #0000FF;">:</span> <span style="color: #000000;">res</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">][</span><span style="color: #000000;">1</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">;</span> <span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%2d: %10d %10d %10d\n"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">res</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">])</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">switch</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">=</span><span style="color: #000000;">4</span> <span style="color: #008080;">then</span> <span style="color: #008080;">exit</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #000000;">times</span><span style="color: #0000FF;">[</span><span style="color: #000000;">t</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">elapsed</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">time</span><span style="color: #0000FF;">()-</span><span style="color: #000000;">t0</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"times:%8s %10s %10s\n"</span><span style="color: #0000FF;">,</span><span style="color: #000000;">times</span><span style="color: #0000FF;">)</span>
|
||||
<!--
|
||||
sequence res = repeat(repeat(0,4),16),
|
||||
times = repeat(0,3)
|
||||
for t=1 to 4 do
|
||||
atom t1 = time()
|
||||
for i=0 to 15 do
|
||||
switch t do
|
||||
case 1: res[i+1][2] = catalan1(i)
|
||||
case 2: res[i+1][3] = catalan2(i)
|
||||
case 3: res[i+1][4] = catalan3(i)
|
||||
case 4: res[i+1][1] = i; printf(1,"%2d: %10d %10d %10d\n",res[i+1])
|
||||
end switch
|
||||
end for
|
||||
if t=4 then exit end if
|
||||
times[t] = elapsed(time()-t1)
|
||||
end for
|
||||
printf(1,"times:%8s %10s %10s\n",times)
|
||||
|
|
|
|||
|
|
@ -1,32 +1,30 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #008080;">include</span> <span style="color: #000000;">builtins</span><span style="color: #0000FF;">\</span><span style="color: #004080;">mpfr</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
|
||||
with javascript_semantics
|
||||
include builtins\mpfr.e
|
||||
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">c2cache</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
|
||||
sequence c2cache = {}
|
||||
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">catalan2m</span><span style="color: #0000FF;">(</span><span style="color: #004080;">integer</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- very fast!</span>
|
||||
<span style="color: #004080;">object</span> <span style="color: #000000;">r</span> <span style="color: #000080;font-style:italic;">-- result (a [cached/shared] mpz)
|
||||
-- (nb: modifying result will mess up cache)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">n</span><span style="color: #0000FF;"><=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">n</span><span style="color: #0000FF;"><=</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">c2cache</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">c2cache</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">r</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span> <span style="color: #008080;">return</span> <span style="color: #000000;">r</span> <span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">else</span>
|
||||
<span style="color: #000000;">c2cache</span> <span style="color: #0000FF;">&=</span> <span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">,</span><span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">c2cache</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #000000;">r</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">(</span><span style="color: #000000;">0</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">mpz</span> <span style="color: #000000;">t</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_init</span><span style="color: #0000FF;">()</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">to</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #7060A8;">mpz_mul</span><span style="color: #0000FF;">(</span><span style="color: #000000;">t</span><span style="color: #0000FF;">,</span><span style="color: #000000;">catalan2m</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">),</span><span style="color: #000000;">catalan2m</span><span style="color: #0000FF;">(</span><span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #000000;">1</span><span style="color: #0000FF;">-</span><span style="color: #000000;">i</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #7060A8;">mpz_add</span><span style="color: #0000FF;">(</span><span style="color: #000000;">r</span><span style="color: #0000FF;">,</span><span style="color: #000000;">r</span><span style="color: #0000FF;">,</span><span style="color: #000000;">t</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #000000;">t</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_free</span><span style="color: #0000FF;">(</span><span style="color: #000000;">t</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">c2cache</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">r</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">r</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
function catalan2m(integer n) -- very fast!
|
||||
object r -- result (a [cached/shared] mpz)
|
||||
-- (nb: modifying result will mess up cache)
|
||||
if n<=0 then return mpz_init(1) end if
|
||||
if n<=length(c2cache) then
|
||||
r = c2cache[n]
|
||||
if r!=0 then return r end if
|
||||
else
|
||||
c2cache &= repeat(0,n-length(c2cache))
|
||||
end if
|
||||
r = mpz_init(0)
|
||||
mpz t = mpz_init()
|
||||
for i=0 to n-1 do
|
||||
mpz_mul(t,catalan2m(i),catalan2m(n-1-i))
|
||||
mpz_add(r,r,t)
|
||||
end for
|
||||
t = mpz_free(t)
|
||||
c2cache[n] = r
|
||||
return r
|
||||
end function
|
||||
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">to</span> <span style="color: #000000;">15</span> <span style="color: #008080;">do</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">mpz_get_str</span><span style="color: #0000FF;">(</span><span style="color: #000000;">catalan2m</span><span style="color: #0000FF;">(</span><span style="color: #000000;">i</span><span style="color: #0000FF;">)))</span> <span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"0..15: %s\n"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">join</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">,</span><span style="color: #008000;">","</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #7060A8;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"100: %s\n"</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">mpz_get_str</span><span style="color: #0000FF;">(</span><span style="color: #000000;">catalan2m</span><span style="color: #0000FF;">(</span><span style="color: #000000;">100</span><span style="color: #0000FF;">))})</span>
|
||||
<!--
|
||||
sequence s = {}
|
||||
for i=0 to 15 do s = append(s,mpz_get_str(catalan2m(i))) end for
|
||||
printf(1,"0..15: %s\n",join(s,","))
|
||||
printf(1,"100: %s\n",{mpz_get_str(catalan2m(100))})
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
function Catalan([uint64]$m) {
|
||||
function fact([bigint]$n) {
|
||||
if($n -lt 2) {[bigint]::one}
|
||||
else{2..$n | foreach -Begin {$prod = [bigint]::one} -Process {$prod = [bigint]::Multiply($prod,$_)} -End {$prod}}
|
||||
}
|
||||
$fact = fact $m
|
||||
$fact1 = [bigint]::Multiply($m+1,$fact)
|
||||
[bigint]::divide((fact (2*$m)), [bigint]::Multiply($fact,$fact1))
|
||||
}
|
||||
0..15 | foreach {"catalan($_): $(catalan $_)"}
|
||||
|
|
@ -1,51 +0,0 @@
|
|||
function Get-CatalanNumber
|
||||
{
|
||||
[CmdletBinding()]
|
||||
[OutputType([PSCustomObject])]
|
||||
Param
|
||||
(
|
||||
[Parameter(Mandatory=$true,
|
||||
ValueFromPipeline=$true,
|
||||
ValueFromPipelineByPropertyName=$true,
|
||||
Position=0)]
|
||||
[uint32[]]
|
||||
$InputObject
|
||||
)
|
||||
|
||||
Begin
|
||||
{
|
||||
function Get-Factorial ([int]$Number)
|
||||
{
|
||||
if ($Number -eq 0)
|
||||
{
|
||||
return 1
|
||||
}
|
||||
|
||||
$factorial = 1
|
||||
|
||||
1..$Number | ForEach-Object {$factorial *= $_}
|
||||
|
||||
$factorial
|
||||
}
|
||||
|
||||
function Get-Catalan ([int]$Number)
|
||||
{
|
||||
if ($Number -eq 0)
|
||||
{
|
||||
return 1
|
||||
}
|
||||
|
||||
(Get-Factorial (2 * $Number)) / ((Get-Factorial (1 + $Number)) * (Get-Factorial $Number))
|
||||
}
|
||||
}
|
||||
Process
|
||||
{
|
||||
foreach ($number in $InputObject)
|
||||
{
|
||||
[PSCustomObject]@{
|
||||
Number = $number
|
||||
CatalanNumber = Get-Catalan $number
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
0..14 | Get-CatalanNumber
|
||||
|
|
@ -1 +0,0 @@
|
|||
(0..14 | Get-CatalanNumber).CatalanNumber
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
-- 22 Mar 2025
|
||||
include Settings
|
||||
-- 23 Aug 2025
|
||||
include Setting
|
||||
|
||||
say 'CATALAN NUMBERS'
|
||||
say version
|
||||
|
|
@ -40,8 +40,4 @@ say catalann(xx)+0
|
|||
say Format(Time('e'),,3) 'seconds'; say
|
||||
return
|
||||
|
||||
include Sequences
|
||||
include Numbers
|
||||
include Functions
|
||||
include Constants
|
||||
include Abend
|
||||
include Math
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
Function catalan(n)
|
||||
catalan = factorial(2*n)/(factorial(n+1)*factorial(n))
|
||||
End Function
|
||||
|
||||
Function factorial(n)
|
||||
If n = 0 Then
|
||||
Factorial = 1
|
||||
Else
|
||||
For i = n To 1 Step -1
|
||||
If i = n Then
|
||||
factorial = n
|
||||
Else
|
||||
factorial = factorial * i
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End Function
|
||||
|
||||
'Find the first 15 Catalan numbers.
|
||||
For j = 1 To 15
|
||||
WScript.StdOut.Write j & " = " & catalan(j)
|
||||
WScript.StdOut.WriteLine
|
||||
Next
|
||||
Loading…
Add table
Add a link
Reference in a new issue