Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -11,10 +11,10 @@ F lah(BigInt n, BigInt k)
|
|||
|
||||
print(‘Unsigned Lah numbers: L(n, k):’)
|
||||
print(‘n/k ’, end' ‘ ’)
|
||||
L(i) 13
|
||||
L(i) 0.<13
|
||||
print(‘#11’.format(i), end' ‘ ’)
|
||||
print()
|
||||
L(row) 13
|
||||
L(row) 0.<13
|
||||
print(‘#<4’.format(row), end' ‘ ’)
|
||||
L(i) 0 .. row
|
||||
V l = lah(row, i)
|
||||
|
|
|
|||
|
|
@ -1,70 +0,0 @@
|
|||
-- Rosetta Code Task written in Ada
|
||||
-- Lah numbers
|
||||
-- https://rosettacode.org/wiki/Lah_numbers
|
||||
-- (Mostly) translated from the AWK example
|
||||
-- Proper formatting of the Big Integers would be nice.
|
||||
-- Not important here, but in general, the factorials should be cached for greater performance.
|
||||
-- Could use alternate libraries for large integers...
|
||||
-- January 2025, R. B. E.
|
||||
-- Using GNAT Big Integers, GNAT version 14.2, MacOS 15.3, M1 chip
|
||||
|
||||
pragma Ada_2022;
|
||||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;
|
||||
with Ada.Numerics.Big_Numbers.Big_Integers; use Ada.Numerics.Big_Numbers.Big_Integers;
|
||||
|
||||
procedure Lah_Numbers is
|
||||
|
||||
function Factorial (F : Natural) return Big_Positive is
|
||||
Prod : Big_Positive := To_Big_Integer (1);
|
||||
begin
|
||||
for I in reverse 2..F loop
|
||||
Prod := Prod * To_Big_Integer (I);
|
||||
end loop;
|
||||
return Prod;
|
||||
end Factorial;
|
||||
|
||||
function Lah (N, K : Natural) return Big_Natural is
|
||||
begin
|
||||
if (K = 1) then
|
||||
return Factorial (N);
|
||||
end if;
|
||||
if (K = N) then
|
||||
return (To_Big_Integer (1));
|
||||
end if;
|
||||
if (K > N) then
|
||||
return (To_Big_Integer (0));
|
||||
end if;
|
||||
if ((K < 1) or (N < 1)) then
|
||||
return (To_Big_Integer (0));
|
||||
end if;
|
||||
return (Factorial (N) * Factorial (N-1)) / (Factorial (K) * Factorial (K-1)) / Factorial (N-K);
|
||||
end Lah;
|
||||
|
||||
Biggest_Lah_Number_in_Row_100 : Big_Natural := To_Big_Integer (0);
|
||||
Candidate_Biggest_Lah_Number_in_Row_100 : Big_Positive;
|
||||
|
||||
begin
|
||||
Put_Line ("unsigned Lah numbers: L(n,k)");
|
||||
Put ("n/k");
|
||||
for I in 0..12 loop
|
||||
Put (I, 3);
|
||||
end loop;
|
||||
New_Line;
|
||||
for Row in 0..12 loop
|
||||
Put (Row, 2);
|
||||
for Col in 0..Row loop
|
||||
Put (To_String (Lah (Row, Col)));
|
||||
end loop;
|
||||
New_Line;
|
||||
end loop;
|
||||
New_Line;
|
||||
for Col in 0..12 loop
|
||||
Candidate_Biggest_Lah_Number_in_Row_100 := Lah (100, Col);
|
||||
if Biggest_Lah_Number_in_Row_100 < Candidate_Biggest_Lah_Number_in_Row_100 then
|
||||
Biggest_Lah_Number_in_Row_100 := Candidate_Biggest_Lah_Number_in_Row_100;
|
||||
end if;
|
||||
end loop;
|
||||
Put_Line ("Maximum value of L(n,k) where n = 100:");
|
||||
Put_Line (To_String (Biggest_Lah_Number_in_Row_100));
|
||||
end Lah_Numbers;
|
||||
|
|
@ -1,8 +1,6 @@
|
|||
func fac n .
|
||||
r = 1
|
||||
for i = 2 to n
|
||||
r *= i
|
||||
.
|
||||
for i = 2 to n : r *= i
|
||||
return r
|
||||
.
|
||||
print 0
|
||||
|
|
|
|||
|
|
@ -1,44 +1,42 @@
|
|||
(phixonline)-->
|
||||
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
|
||||
<span style="color: #008080;">include</span> <span style="color: #004080;">mpfr</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
|
||||
with javascript_semantics
|
||||
include mpfr.e
|
||||
|
||||
<span style="color: #008080;">constant</span> <span style="color: #000000;">lim</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">100</span><span style="color: #0000FF;">,</span>
|
||||
<span style="color: #000000;">lim1</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">lim</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span>
|
||||
<span style="color: #000000;">last</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">12</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">l</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;">lim1</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">lim1</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #000000;">l</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: #7060A8;">mpz_inits</span><span style="color: #0000FF;">(</span><span style="color: #000000;">lim1</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #7060A8;">mpz_set_si</span><span style="color: #0000FF;">(</span><span style="color: #000000;">l</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</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;">if</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">!=</span><span style="color: #000000;">2</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">mpz_fac_ui</span><span style="color: #0000FF;">(</span><span style="color: #000000;">l</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</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: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #004080;">mpz</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">t</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">m100</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">mpz_inits</span><span style="color: #0000FF;">(</span><span style="color: #000000;">2</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">lim</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">n</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;">l</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;">2</span><span style="color: #0000FF;">],</span><span style="color: #000000;">l</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">][</span><span style="color: #000000;">2</span><span style="color: #0000FF;">])</span>
|
||||
<span style="color: #7060A8;">mpz_fdiv_q</span><span style="color: #0000FF;">(</span><span style="color: #000000;">t</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">l</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</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: #7060A8;">mpz_fdiv_q</span><span style="color: #0000FF;">(</span><span style="color: #000000;">t</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">l</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">][</span><span style="color: #000000;">2</span><span style="color: #0000FF;">])</span>
|
||||
<span style="color: #7060A8;">mpz_fdiv_q</span><span style="color: #0000FF;">(</span><span style="color: #000000;">l</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;">k</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">],</span> <span style="color: #000000;">t</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">l</span><span style="color: #0000FF;">[</span><span style="color: #000000;">n</span><span style="color: #0000FF;">-</span><span style="color: #000000;">k</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: #008080;">end</span> <span style="color: #008080;">for</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;">"Unsigned Lah numbers: l(n, k):\n n k:"</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;">last</span> <span style="color: #008080;">do</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;">"%6d "</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;">"\n--- %s\n"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">repeat</span><span style="color: #0000FF;">(</span><span style="color: #008000;">'-'</span><span style="color: #0000FF;">,</span><span style="color: #000000;">last</span><span style="color: #0000FF;">*</span><span style="color: #000000;">11</span><span style="color: #0000FF;">+</span><span style="color: #000000;">6</span><span style="color: #0000FF;">))</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">to</span> <span style="color: #000000;">last</span> <span style="color: #008080;">do</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 "</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">n</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</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;">printf</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"%10s "</span><span style="color: #0000FF;">,{</span><span style="color: #7060A8;">mpz_get_str</span><span style="color: #0000FF;">(</span><span style="color: #000000;">l</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;">k</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;">"\n"</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">lim1</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">mpz</span> <span style="color: #000000;">l100k</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">l</span><span style="color: #0000FF;">[</span><span style="color: #000000;">lim1</span><span style="color: #0000FF;">][</span><span style="color: #000000;">k</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #7060A8;">mpz_cmp</span><span style="color: #0000FF;">(</span><span style="color: #000000;">l100k</span><span style="color: #0000FF;">,</span><span style="color: #000000;">m100</span><span style="color: #0000FF;">)</span> <span style="color: #0000FF;">></span> <span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #7060A8;">mpz_set</span><span style="color: #0000FF;">(</span><span style="color: #000000;">m100</span><span style="color: #0000FF;">,</span><span style="color: #000000;">l100k</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</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;">"\nThe maximum l(100,k): %s\n"</span><span style="color: #0000FF;">,</span><span style="color: #7060A8;">shorten</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">mpz_get_str</span><span style="color: #0000FF;">(</span><span style="color: #000000;">m100</span><span style="color: #0000FF;">)))</span>
|
||||
<!--
|
||||
constant lim = 100,
|
||||
lim1 = lim+1,
|
||||
last = 12
|
||||
sequence l = repeat(0,lim1)
|
||||
for n=1 to lim1 do
|
||||
l[n] = mpz_inits(lim1)
|
||||
mpz_set_si(l[n][n],1)
|
||||
if n!=2 then
|
||||
mpz_fac_ui(l[n][2],n-1)
|
||||
end if
|
||||
end for
|
||||
mpz {t, m100} = mpz_inits(2)
|
||||
for n=1 to lim do
|
||||
for k=1 to n do
|
||||
mpz_mul(t,l[n+1][2],l[n][2])
|
||||
mpz_fdiv_q(t, t, l[k+1][2])
|
||||
mpz_fdiv_q(t, t, l[k][2])
|
||||
mpz_fdiv_q(l[n+1][k+1], t, l[n-k+1][2])
|
||||
end for
|
||||
end for
|
||||
printf(1,"Unsigned Lah numbers: l(n, k):\n n k:")
|
||||
for i=0 to last do
|
||||
printf(1,"%6d ", i)
|
||||
end for
|
||||
printf(1,"\n--- %s\n",repeat('-',last*11+6))
|
||||
for n=0 to last do
|
||||
printf(1,"%2d ", n)
|
||||
for k=1 to n+1 do
|
||||
printf(1,"%10s ",{mpz_get_str(l[n+1][k])})
|
||||
end for
|
||||
printf(1,"\n")
|
||||
end for
|
||||
for k=1 to lim1 do
|
||||
mpz l100k = l[lim1][k]
|
||||
if mpz_cmp(l100k,m100) > 0 then
|
||||
mpz_set(m100,l100k)
|
||||
end if
|
||||
end for
|
||||
printf(1,"\nThe maximum l(100,k): %s\n",shorten(mpz_get_str(m100)))
|
||||
|
|
|
|||
|
|
@ -1,53 +0,0 @@
|
|||
' Lah numbers - VBScript - 04/02/2021
|
||||
|
||||
Function F(i,n)
|
||||
Dim c: c=CCur(i): If n>Len(c) Then F=Space(n-Len(c))&c Else F=c
|
||||
End Function 'F
|
||||
|
||||
Function Fact(ByVal n)
|
||||
Dim res
|
||||
If n=0 Then
|
||||
Fact = 1
|
||||
Else
|
||||
res = 1
|
||||
While n>0
|
||||
res = res*n
|
||||
n = n-1
|
||||
Wend
|
||||
Fact = res
|
||||
End If
|
||||
End Function 'Fact
|
||||
|
||||
Function Lah(n, k)
|
||||
If k=1 Then
|
||||
Lah = Fact(n)
|
||||
ElseIf k=n Then
|
||||
Lah = 1
|
||||
ElseIf k>n Then
|
||||
Lah=0
|
||||
ElseIf k < 1 Or n < 1 Then
|
||||
Lah = 0
|
||||
Else
|
||||
Lah = (Fact(n) * Fact(n-1)) / (Fact(k) * Fact(k-1)) / Fact(n-k)
|
||||
End If
|
||||
End Function 'Lah
|
||||
|
||||
Sub Main()
|
||||
ns=12: p=10
|
||||
WScript.Echo "Unsigned Lah numbers: Lah(n,k):"
|
||||
buf = "n/k "
|
||||
For k=1 To ns
|
||||
buf = buf & F(k,p) & " "
|
||||
Next 'k
|
||||
WScript.Echo buf
|
||||
For n=1 To ns
|
||||
buf = F(n,3) & " "
|
||||
For k=1 To n
|
||||
l = Lah(n,k)
|
||||
buf = buf & F(l,p) & " "
|
||||
Next 'k
|
||||
WScript.Echo buf
|
||||
Next 'n
|
||||
End Sub 'Main
|
||||
|
||||
Main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue