Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
78
Task/Juggler-sequence/Ada/juggler-sequence.ada
Normal file
78
Task/Juggler-sequence/Ada/juggler-sequence.ada
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
with Ada.Text_IO;
|
||||
with Ada.Numerics.Generic_Elementary_Functions;
|
||||
|
||||
procedure Juggler is
|
||||
|
||||
subtype Number is Long_Long_Integer;
|
||||
type Index_Type is new Natural;
|
||||
|
||||
subtype Initial_Values is Number range 20 .. 39;
|
||||
|
||||
generic
|
||||
Initial : Number;
|
||||
package Generic_Juggler is
|
||||
procedure Next (Value : out Number; Index : out Index_Type);
|
||||
end Generic_Juggler;
|
||||
|
||||
package body Generic_Juggler is
|
||||
|
||||
type Real is new Long_Long_Float;
|
||||
|
||||
package Real_Math is
|
||||
new Ada.Numerics.Generic_Elementary_Functions (Real);
|
||||
|
||||
K : Index_Type := 0;
|
||||
A_K : Real := Real (Initial);
|
||||
|
||||
procedure Next (Value : out Number; Index : out Index_Type) is
|
||||
use Real_Math;
|
||||
begin
|
||||
Value := Number (A_K);
|
||||
Index := K;
|
||||
A_K := (if Number (A_K) mod 2 = 0
|
||||
then Real'Floor (A_K ** 0.5)
|
||||
else Real'Floor (A_K ** 1.5));
|
||||
K := K + 1;
|
||||
end Next;
|
||||
|
||||
end Generic_Juggler;
|
||||
|
||||
procedure Statistics (N : Number; L_N : out Index_Type;
|
||||
H_N : out Number; I_N : out Index_Type)
|
||||
is
|
||||
package Juggler_Generator is new Generic_Juggler (Initial => N);
|
||||
use Juggler_Generator;
|
||||
Value : Number;
|
||||
begin
|
||||
H_N := 0;
|
||||
I_N := 0;
|
||||
loop
|
||||
Next (Value, L_N);
|
||||
if Value > H_N then
|
||||
H_N := Value;
|
||||
I_N := L_N;
|
||||
end if;
|
||||
exit when Value = 1;
|
||||
end loop;
|
||||
end Statistics;
|
||||
|
||||
procedure Put_Table is
|
||||
package Number_IO is new Ada.Text_IO.Integer_IO (Number);
|
||||
package Index_IO is new Ada.Text_IO.Integer_IO (Index_Type);
|
||||
use Ada.Text_IO, Number_IO, Index_IO;
|
||||
L_N : Index_Type;
|
||||
H_N : Number;
|
||||
I_N : Index_Type;
|
||||
begin
|
||||
Put_Line (" N L(N) H(N) I(N)");
|
||||
Put_Line ("---------------------------------");
|
||||
for N in Initial_Values loop
|
||||
Statistics (N, L_N, H_N, I_N);
|
||||
Put (N, Width => 3); Put (L_N, Width => 7);
|
||||
Put (H_N, Width => 16); Put (I_N, Width => 7); New_Line;
|
||||
end loop;
|
||||
end Put_Table;
|
||||
|
||||
begin
|
||||
Put_Table;
|
||||
end Juggler;
|
||||
Loading…
Add table
Add a link
Reference in a new issue