|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 2528 (0x9e0)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
└─⟦d65440be7⟧ »DATA«
└─⟦this⟧
with Text_Io;
package body Square is
procedure Move (Dir : Direction) is
begin
case Dir is
when South =>
null;
when North =>
if Line = Row_Line'First then
Line := Row_Line'Last;
else
Line := Line - 1;
end if;
when East =>
if Row = Row_Line'Last then
Row := Row_Line'First;
else
Row := Row + 1;
end if;
when West =>
if Row = Row_Line'First then
Row := Row_Line'Last;
else
Row := Row - 1;
end if;
end case;
end Move;
procedure Go_To_Center is
begin
Line := (Dim / 2) + 1;
Row := (Dim / 2) + 1;
end Go_To_Center;
procedure Deposit (Token : in out Natural) is
begin
Square (Line, Row) := Token;
Token := Token + 1;
end Deposit;
function Full return Boolean is
begin
if Token <= Dim * Dim then
return False;
else
return True;
end if;
end Full;
function Occup_Cell return Boolean is
begin
if Square (Line, Row) = 0 then
return False;
else
return True;
end if;
end Occup_Cell;
procedure Display is
package Int_Io is new Text_Io.Integer_Io (Natural);
begin
for I in 1 .. Dim loop
for J in 1 .. Dim loop
Int_Io.Put (Square (I, J));
end loop;
Text_Io.New_Line;
end loop;
end Display;
procedure Verify is
package Int_Io is new Text_Io.Integer_Io (Natural);
Value, Result : Natural;
Ok : Boolean := True;
begin
Value := Dim * (Dim * Dim + 1) / 2;
for I in 1 .. Dim loop
Result := 0;
for J in 1 .. Dim loop
Result := Result + Square (I, J);
end loop;
if Result /= Value then
Ok := False;
exit;
end if;
end loop;
Text_Io.New_Line;
if Ok then
Text_Io.Put ("Magic Square is OK.");
else
Text_Io.Put ("Magic Square is NOT OK.");
end if;
Text_Io.New_Line;
Text_Io.Put ("Sum rows & lines is : ");
Int_Io.Put (Value);
end Verify;
end Square;