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: 7560 (0x1d88) Types: TextFile Names: »B«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13 └─ ⟦124ff5788⟧ »DATA« └─⟦this⟧ └─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦this⟧ └─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16 └─ ⟦6f12a12be⟧ »DATA« └─⟦this⟧ └─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
with Expertsystem; use Expertsystem; with Robot_New, Brick_New; procedure Mise_En_Casier_M is package Bricks_And_Boxes is procedure Find_The_Bricks; end Bricks_And_Boxes; package body Bricks_And_Boxes is ----------------------------------------------------------------------------- -- RULES ----------------------------------------------------------------------------- -- Rule 1 ------------ function Match_1 (R : Robot_New.Object; B : Brick_New.Object) return Boolean is begin return Robot_New.Is_The_Task (Of_Robot => R, The_Task => Robot_New.Prendre) and then not Robot_New.Is_Occupied (The_Robot => R) and then Brick_New.Is_The_Place (Of_Brick => B, The_Place => Brick_New.Tas) and then Brick_New.The_Greatest_On_Heap (Brick => B); end Match_1; function Rule_1 is new Tuplecollection.Join2 (Match_1); function Condition_Saisir return Tuplecollection.Object is begin return Rule_1 (Robot_New.All_Robots, Brick_New.All_Bricks); end Condition_Saisir; procedure Action_Saisir (Mg : Tuple.Object) is A_Robot, A_Brick : Reference; begin A_Robot := Tuple.First (Mg); A_Brick := Tuple.Second (Mg); Brick_New.Modify (A_Brick, The_Place => Brick_New.Pince); Robot_New.Modify (A_Robot, The_Occupation => True); Put_Line ("RegleSaisir : " & Robot_New.Name (A_Robot) & " prend brique (" & Integer'Image (Brick_New.Size (A_Brick)) & " / " & Brick_New.Tcolor'Image (Brick_New.Color (A_Brick)) & ")"); end Action_Saisir; ----------------------------------------------------------------------------- -- Rule 2 ------------ function Match_2 (R : Robot_New.Object; B : Brick_New.Object) return Boolean is begin return Robot_New.Is_The_Task (Of_Robot => R, The_Task => Robot_New.Prendre) and then Robot_New.Is_Occupied (The_Robot => R) and then Brick_New.Is_The_Place (Of_Brick => B, The_Place => Brick_New.Pince); end Match_2; function Rule_2 is new Tuplecollection.Join2 (Match_2); function Condition_Tenir return Tuplecollection.Object is begin return Rule_2 (Robot_New.All_Robots, Brick_New.All_Bricks); end Condition_Tenir; procedure Action_Tenir (Mg : Tuple.Object) is A_Robot, A_Brick : Reference; begin A_Robot := Tuple.First (Mg); A_Brick := Tuple.Second (Mg); Robot_New.Modify (A_Robot, The_Task => Robot_New.Deposer); Put_Line ("RegleTenir : " & Robot_New.Name (A_Robot) & " tient brique (" & Integer'Image (Brick_New.Size (A_Brick)) & " / " & Brick_New.Tcolor'Image (Brick_New.Color (A_Brick)) & ")"); end Action_Tenir; ----------------------------------------------------------------------------- -- Rule 3 -------------- function Match_3 (R : Robot_New.Object; B : Brick_New.Object) return Boolean is begin return Robot_New.Is_The_Task (Of_Robot => R, The_Task => Robot_New.Deposer) and then Brick_New.Is_The_Place (Of_Brick => B, The_Place => Brick_New.Pince); end Match_3; function Rule_3 is new Tuplecollection.Join2 (Match_3); function Condition_Caser return Tuplecollection.Object is begin return Rule_3 (Robot_New.All_Robots, Brick_New.All_Bricks); end Condition_Caser; procedure Action_Caser (Mg : Tuple.Object) is A_Brick, A_Robot : Reference; begin A_Robot := Tuple.First (Mg); A_Brick := Tuple.Second (Mg); Robot_New.Modify (A_Robot, The_Task => Robot_New.Prendre); Robot_New.Modify (A_Robot, The_Box => Robot_New.Last_Box); Brick_New.Modify (A_Brick, The_Place => Brick_New.Boite); Brick_New.Modify (A_Brick, The_Box => Robot_New.Box_Number (A_Robot)); Put_Line ("RegleCaser : " & Robot_New.Name (A_Robot) & " depose brique (" & Integer'Image (Brick_New.Size (A_Brick)) & " / " & Brick_New.Tcolor'Image (Brick_New.Color (A_Brick)) & ")" & " dans case " & Integer'Image (Robot_New.Box_Number (A_Robot))); Put_Line (" "); Robot_New.Modify (A_Robot, The_Occupation => False); end Action_Caser; ----------------------------------------------------------------------------- -- Rule 4 ------------ function Match_4 (B : Brick_New.Object) return Boolean is begin return Brick_New.Is_The_Place (Of_Brick => B, The_Place => Brick_New.Tas); end Match_4; function Rule_4 is new Tuplecollection.Join1 (Match_4); function Condition_Arreter return Tuplecollection.Object is begin return Rule_4 (Robot_New.All_Robots); end Condition_Arreter; procedure Action_Arreter (Mgo : Tuple.Object) is begin Put_Line ("RegleArreter : Fin de recherche"); Put_Line (" "); end Action_Arreter; ----------------------------------------------------------------------------- package Look_For_Bricks is new Engine (Context_Name => "BricAndBox", Resolution => Mea, Used_Rules => 4, Name_1 => "saisir ", Condition_1 => Condition_Saisir, Action_1 => Action_Saisir, Name_2 => "tenir ", Condition_2 => Condition_Tenir, Action_2 => Action_Tenir, Name_3 => "caser ", Condition_3 => Condition_Caser, Action_3 => Action_Caser, Name_4 => "arreter ", Condition_4 => Condition_Arreter, Action_4 => Action_Arreter); procedure Find_The_Bricks is Result : Boolean; begin Put_Line ("-------------------------------------------------"); Robot_New.Create; Brick_New.Create; Result := Look_For_Bricks.Inference (Any); Put_Line ("-------------------------------------------------"); end Find_The_Bricks; end Bricks_And_Boxes; begin Debugger.Resetdebug (Debugger.Text); Debugger.Setdebugon (Debugger.Completly); Debugger.Refreshdebug; Debugger.Setdebugoff (Debugger.Conditionevalued); Bricks_And_Boxes.Find_The_Bricks; end Mise_En_Casier_M;