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 - downloadIndex: ┃ B T ┃
Length: 2113 (0x841) 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 Magic_Tab : array (Dimension, Dimension) of Token; X_Tab, Y_Tab : Integer; procedure Init_Magic_Tab is I, J : Integer; begin for I in Magic_Tab'Range (1) loop for J in Magic_Tab'Range (2) loop Magic_Tab (I, J) := 0; end loop; end loop; end Init_Magic_Tab; procedure Move (D : Direction) is begin case D is when North => Y_Tab := Y_Tab - 1; when East => X_Tab := X_Tab + 1; when West => X_Tab := X_Tab - 1; end case; Wrap; end Move; procedure Go_To_Center is Center : Integer; begin Center := (Dimension'Last / 2) + 1; X_Tab := Center; Y_Tab := Center; end Go_To_Center; procedure Deposit (T : Token) is begin Magic_Tab (Y_Tab, X_Tab) := T; end Deposit; function Cell_Busy return Boolean is begin if Magic_Tab (Y_Tab, X_Tab) /= 0 then return True; else return False; end if; end Cell_Busy; function Out_Of_Range (D : Direction) return Boolean is begin if Y_Tab >= 1 and X_Tab <= 5 and X_Tab >= 1 then return False; else return True; end if; end Out_Of_Range; procedure Wrap is begin if Y_Tab = 0 then Y_Tab := Dimension'Last; else if X_Tab = 0 then X_Tab := Dimension'Last; else if X_Tab > 5 then X_Tab := Dimension'First; end if; end if; end if; end Wrap; procedure Display_Square is package Io is new Text_Io.Integer_Io (Num => Token); I, J : Integer; begin for I in Magic_Tab'Range (1) loop for J in Magic_Tab'Range (2) loop Io.Put (Magic_Tab (I, J)); end loop; Text_Io.New_Line; end loop; end Display_Square; end Square;