Just another update
This commit is contained in:
parent
a25938f123
commit
00a190b0a6
6591 changed files with 94363 additions and 23227 deletions
11
Task/Pascals-triangle/Ada/pascals-triangle-1.ada
Normal file
11
Task/Pascals-triangle/Ada/pascals-triangle-1.ada
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
package Pascal is
|
||||
|
||||
type Row is array (Natural range <>) of Natural;
|
||||
|
||||
function Length(R: Row) return Positive;
|
||||
|
||||
function First_Row(Max_Length: Positive) return Row;
|
||||
|
||||
function Next_Row(R: Row) return Row;
|
||||
|
||||
end Pascal;
|
||||
26
Task/Pascals-triangle/Ada/pascals-triangle-2.ada
Normal file
26
Task/Pascals-triangle/Ada/pascals-triangle-2.ada
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
package body Pascal is
|
||||
|
||||
function First_Row(Max_Length: Positive) return Row is
|
||||
R: Row(0 .. Max_Length) := (0 | 1 => 1, others => 0);
|
||||
begin
|
||||
return R;
|
||||
end First_Row;
|
||||
|
||||
function Next_Row(R: Row) return Row is
|
||||
S: Row(R'Range);
|
||||
begin
|
||||
S(0) := Length(R)+1;
|
||||
S(Length(S)) := 1;
|
||||
for J in reverse 2 .. Length(R) loop
|
||||
S(J) := R(J)+R(J-1);
|
||||
end loop;
|
||||
S(1) := 1;
|
||||
return S;
|
||||
end Next_Row;
|
||||
|
||||
function Length(R: Row) return Positive is
|
||||
begin
|
||||
return R(0);
|
||||
end Length;
|
||||
|
||||
end Pascal;
|
||||
18
Task/Pascals-triangle/Ada/pascals-triangle-3.ada
Normal file
18
Task/Pascals-triangle/Ada/pascals-triangle-3.ada
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
with Ada.Text_IO, Ada.Integer_Text_IO, Ada.Command_Line, Pascal; use Pascal;
|
||||
|
||||
procedure Triangle is
|
||||
|
||||
Number_Of_Rows: Positive := Integer'Value(Ada.Command_Line.Argument(1));
|
||||
Row: Pascal.Row := First_Row(Number_Of_Rows);
|
||||
|
||||
begin
|
||||
loop
|
||||
-- print one row
|
||||
for J in 1 .. Length(Row) loop
|
||||
Ada.Integer_Text_IO.Put(Row(J), 5);
|
||||
end loop;
|
||||
Ada.Text_IO.New_Line;
|
||||
exit when Length(Row) >= Number_Of_Rows;
|
||||
Row := Next_Row(Row);
|
||||
end loop;
|
||||
end Triangle;
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
with Ada.Integer_Text_Io; use Ada.Integer_Text_Io;
|
||||
with Ada.Text_Io; use Ada.Text_Io;
|
||||
|
||||
procedure Pascals_Triangle is
|
||||
type Row is array(Positive range <>) of Integer;
|
||||
type Row_Access is access Row;
|
||||
type Triangle is array(Positive range <>) of Row_Access;
|
||||
function General_Triangle(Depth : Positive) return Triangle is
|
||||
Result : Triangle(1..Depth);
|
||||
begin
|
||||
for I in Result'range loop
|
||||
Result(I) := new Row(1..I);
|
||||
for J in 1..I loop
|
||||
if J = Result(I)'First or else J = Result(I)'Last then
|
||||
Result(I)(J) := 1;
|
||||
else
|
||||
Result(I)(J) := Result(I - 1)(J - 1) + Result(I - 1)(J);
|
||||
end if;
|
||||
end loop;
|
||||
end loop;
|
||||
return Result;
|
||||
end General_Triangle;
|
||||
procedure Print(Item : Triangle) is
|
||||
begin
|
||||
for I in Item'range loop
|
||||
for J in 1..I loop
|
||||
Put(Item => Item(I)(J), Width => 3);
|
||||
end loop;
|
||||
New_Line;
|
||||
end loop;
|
||||
end Print;
|
||||
begin
|
||||
Print(General_Triangle(7));
|
||||
end Pascals_Triangle;
|
||||
Loading…
Add table
Add a link
Reference in a new issue