A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
19
Task/Fibonacci-sequence/Ada/fibonacci-sequence-1.ada
Normal file
19
Task/Fibonacci-sequence/Ada/fibonacci-sequence-1.ada
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
with Ada.Text_IO, Ada.Command_Line;
|
||||
|
||||
procedure Fib is
|
||||
|
||||
X: Positive := Positive'Value(Ada.Command_Line.Argument(1));
|
||||
|
||||
function Fib(P: Positive) return Positive is
|
||||
begin
|
||||
if P <= 2 then
|
||||
return 1;
|
||||
else
|
||||
return Fib(P-1) + Fib(P-2);
|
||||
end if;
|
||||
end Fib;
|
||||
|
||||
begin
|
||||
Ada.Text_IO.Put("Fibonacci(" & Integer'Image(X) & " ) = ");
|
||||
Ada.Text_IO.Put_Line(Integer'Image(Fib(X)));
|
||||
end Fib;
|
||||
20
Task/Fibonacci-sequence/Ada/fibonacci-sequence-2.ada
Normal file
20
Task/Fibonacci-sequence/Ada/fibonacci-sequence-2.ada
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
with Ada.Text_IO; use Ada.Text_IO;
|
||||
|
||||
procedure Test_Fibonacci is
|
||||
function Fibonacci (N : Natural) return Natural is
|
||||
This : Natural := 0;
|
||||
That : Natural := 1;
|
||||
Sum : Natural;
|
||||
begin
|
||||
for I in 1..N loop
|
||||
Sum := This + That;
|
||||
That := This;
|
||||
This := Sum;
|
||||
end loop;
|
||||
return This;
|
||||
end Fibonacci;
|
||||
begin
|
||||
for N in 0..10 loop
|
||||
Put_Line (Positive'Image (Fibonacci (N)));
|
||||
end loop;
|
||||
end Test_Fibonacci;
|
||||
33
Task/Fibonacci-sequence/Ada/fibonacci-sequence-3.ada
Normal file
33
Task/Fibonacci-sequence/Ada/fibonacci-sequence-3.ada
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
with Ada.Text_IO, Ada.Command_Line, Crypto.Types.Big_Numbers;
|
||||
|
||||
procedure Fibonacci is
|
||||
|
||||
X: Positive := Positive'Value(Ada.Command_Line.Argument(1));
|
||||
|
||||
Bit_Length: Positive := 1 + (696 * X) / 1000;
|
||||
-- that number of bits is sufficient to store the full result.
|
||||
|
||||
package LN is new Crypto.Types.Big_Numbers
|
||||
(Bit_Length + (32 - Bit_Length mod 32));
|
||||
-- the actual number of bits has to be a multiple of 32
|
||||
use LN;
|
||||
|
||||
function Fib(P: Positive) return Big_Unsigned is
|
||||
Previous: Big_Unsigned := Big_Unsigned_Zero;
|
||||
Result: Big_Unsigned := Big_Unsigned_One;
|
||||
Tmp: Big_Unsigned;
|
||||
begin
|
||||
-- Result = 1 = Fibonacci(1)
|
||||
for I in 1 .. P-1 loop
|
||||
Tmp := Result;
|
||||
Result := Previous + Result;
|
||||
Previous := Tmp;
|
||||
-- Result = Fibonacci(I+1))
|
||||
end loop;
|
||||
return Result;
|
||||
end Fib;
|
||||
|
||||
begin
|
||||
Ada.Text_IO.Put("Fibonacci(" & Integer'Image(X) & " ) = ");
|
||||
Ada.Text_IO.Put_Line(LN.Utils.To_String(Fib(X)));
|
||||
end Fibonacci;
|
||||
Loading…
Add table
Add a link
Reference in a new issue