|
|
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: 1763 (0x6e3)
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 Magic is
procedure Display_Square is
package My_Int is new Text_Io.Integer_Io (Num => Token);
begin
Text_Io.Put_Line ("Magic Square started ...");
Text_Io.Put_Line ("");
for J in Square_Large loop
for I in Square_Large loop
if I = 1 then
Text_Io.Put ("|");
end if;
My_Int.Put (Magic (I, J));
Text_Io.Put ("|");
end loop;
Text_Io.Put_Line ("");
end loop;
end Display_Square;
procedure Move (D : Direction) is
begin
case D is
when North =>
Y := Y - 1;
when South =>
Y := Y + 1;
when East =>
X := X + 1;
when West =>
X := X - 1;
end case;
end Move;
procedure Go_To_Center is
begin
X := (Large / 2) + 1;
Y := X;
end Go_To_Center;
procedure Deposit (T : Token) is
begin
Magic (X, Y) := T;
end Deposit;
function Get_Token return Token is
begin
return Magic (X, Y);
end Get_Token;
procedure Wrap_If_Edge is
begin
if X > Square_Large'Last then
X := Square_Large'First;
end if;
if X < Square_Large'First then
X := Square_Large'Last;
end if;
if Y > Magic'Last then
Y := Magic'First;
end if;
if Y < Square_Large'First then
Y := Square_Large'Last;
end if;
end Wrap_If_Edge;
begin
for I in Square_Large loop
for J in Square_Large loop
Magic (I, J) := Token'First;
end loop;
end loop;
end Magic;