Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,96 +0,0 @@
|
|||
with Ada.Text_IO;
|
||||
with Ada.Integer_Text_IO;
|
||||
|
||||
procedure Show_Fusc is
|
||||
|
||||
generic
|
||||
Precalculate : Natural;
|
||||
package Fusc_Sequences is
|
||||
function Fusc (N : in Natural) return Natural;
|
||||
end Fusc_Sequences;
|
||||
|
||||
package body Fusc_Sequences is
|
||||
|
||||
Precalculated_Fusc : array (0 .. Precalculate) of Natural;
|
||||
|
||||
function Fusc_Slow (N : in Natural) return Natural is
|
||||
begin
|
||||
if N = 0 or N = 1 then
|
||||
return N;
|
||||
elsif N mod 2 = 0 then
|
||||
return Fusc_Slow (N / 2);
|
||||
else
|
||||
return Fusc_Slow ((N - 1) / 2) + Fusc_Slow ((N + 1) / 2);
|
||||
end if;
|
||||
end Fusc_Slow;
|
||||
|
||||
function Fusc (N : in Natural) return Natural is
|
||||
begin
|
||||
if N <= Precalculate then
|
||||
return Precalculated_Fusc (N);
|
||||
elsif N mod 2 = 0 then
|
||||
return Fusc (N / 2);
|
||||
else
|
||||
return Fusc ((N - 1) / 2) + Fusc ((N + 1) / 2);
|
||||
end if;
|
||||
end Fusc;
|
||||
|
||||
begin
|
||||
for N in Precalculated_Fusc'Range loop
|
||||
Precalculated_Fusc (N) := Fusc_Slow (N);
|
||||
end loop;
|
||||
end Fusc_Sequences;
|
||||
|
||||
|
||||
package Fusc_Sequence is
|
||||
new Fusc_Sequences (Precalculate => 200_000);
|
||||
|
||||
function Fusc (N : in Natural) return Natural
|
||||
renames Fusc_Sequence.Fusc;
|
||||
|
||||
|
||||
procedure Print_Small_Fuscs is
|
||||
use Ada.Text_IO;
|
||||
begin
|
||||
Put_Line ("First 61 numbers in the fusc sequence:");
|
||||
for N in 0 .. 60 loop
|
||||
Put (Fusc (N)'Image);
|
||||
Put (" ");
|
||||
end loop;
|
||||
New_Line;
|
||||
end Print_Small_Fuscs;
|
||||
|
||||
|
||||
procedure Print_Large_Fuscs (High : in Natural) is
|
||||
use Ada.Text_IO;
|
||||
use Ada.Integer_Text_IO;
|
||||
subtype N_Range is Natural range Natural'First .. High;
|
||||
F : Natural;
|
||||
Len : Natural;
|
||||
Max_Len : Natural := 0;
|
||||
Placeholder : String := " n fusc(n)";
|
||||
Image_N : String renames Placeholder (1 .. 8);
|
||||
Image_Fusc : String renames Placeholder (10 .. Placeholder'Last);
|
||||
begin
|
||||
New_Line;
|
||||
Put_Line ("Printing all largest Fusc numbers upto " & High'Image);
|
||||
Put_Line (Placeholder);
|
||||
|
||||
for N in N_Range loop
|
||||
F := Fusc (N);
|
||||
Len := F'Image'Length;
|
||||
|
||||
if Len > Max_Len then
|
||||
Max_Len := Len;
|
||||
Put (Image_N, N);
|
||||
Put (Image_Fusc, F);
|
||||
Put (Placeholder);
|
||||
New_Line;
|
||||
end if;
|
||||
end loop;
|
||||
end Print_Large_Fuscs;
|
||||
|
||||
begin
|
||||
Print_Small_Fuscs;
|
||||
Print_Large_Fuscs (High => 20_000_000);
|
||||
end Show_Fusc;
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
fusc: function [n][
|
||||
if? or? n=0 n=1 -> n
|
||||
else [
|
||||
if? 0=n%2 -> fusc n/2
|
||||
else -> (fusc (n-1)/2) + fusc (n+1)/2
|
||||
switch or? n=0 n=1 -> n
|
||||
[
|
||||
switch 0=n%2 -> fusc n/2
|
||||
-> (fusc (n-1)/2) + fusc (n+1)/2
|
||||
]
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -1,26 +1,25 @@
|
|||
FUSCMAX = 20000000
|
||||
len fusc[] FUSCMAX + 1
|
||||
arrbase fusc[] 0
|
||||
#
|
||||
fusc[0] = 0
|
||||
fusc[1] = 1
|
||||
for n = 2 to FUSCMAX
|
||||
if n mod 2 = 0
|
||||
fusc[n] = fusc[n / 2]
|
||||
else
|
||||
fusc[n] = fusc[(n - 1) / 2] + fusc[(n + 1) / 2]
|
||||
fastproc fill .
|
||||
fusc[1] = 1
|
||||
for n = 2 to FUSCMAX
|
||||
if n mod 2 = 0
|
||||
fusc[n] = fusc[n / 2]
|
||||
else
|
||||
fusc[n] = fusc[(n - 1) / 2] + fusc[(n + 1) / 2]
|
||||
.
|
||||
.
|
||||
.
|
||||
for n = 0 to 60
|
||||
write fusc[n] & " "
|
||||
.
|
||||
fill
|
||||
write "0 "
|
||||
for n = 1 to 60 : write fusc[n] & " "
|
||||
print ""
|
||||
print ""
|
||||
for i = 0 to 5
|
||||
val = -1
|
||||
if i <> 0
|
||||
val = floor pow 10 i
|
||||
.
|
||||
start = 1
|
||||
print "fusc[0] = 0"
|
||||
for i = 1 to 5
|
||||
val = floor pow 10 i
|
||||
for j = start to FUSCMAX
|
||||
if fusc[j] > val
|
||||
print "fusc[" & j & "] = " & fusc[j]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue