|
|
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: 7898 (0x1eda)
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;
with Robot_New, Brick_New;
procedure Mise_En_Casier is
package Robotetbrique is
procedure Miseenboite;
end Robotetbrique;
package body Robotetbrique is
Casier : Natural := 0;
A_Brick, A_Robot : Expertsystem.Reference;
function Peutmettreenboite return Boolean is
begin
Regle_Caser:
-- (classe => robot, tache => deposer, case => <c>)
-- (classe => brique, lieu => pince)
------------------------------------------------------
declare
function Robot_Match
(R : Expertsystem.Reference) return Boolean is
begin
return Robot_New.Is_The_Task
(Of_Robot => R,
The_Task => Robot_New.Deposer);
end Robot_Match;
function Brick_Match
(B : Expertsystem.Reference) return Boolean is
begin
return Brick_New.Is_The_Place
(Of_Brick => B, The_Place => Brick_New.Pince);
end Brick_Match;
function Robot_Ok is
new Expertsystem.Collection.Findone (Robot_Match);
function Brick_Ok is
new Expertsystem.Collection.Findone (Brick_Match);
begin
A_Robot := Robot_Ok (Robot_New.All_Robots);
A_Brick := Brick_Ok (Brick_New.All_Bricks);
if Expertsystem.Collection.Isnotnull (A_Robot) and
Expertsystem.Collection.Isnotnull (A_Brick) then
Brick_New.Modify (A_Brick,
The_Place => Brick_New.Boite);
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_Box => Robot_New.Box_Number (A_Robot));
Expertsystem.Put_Line
("RegleCaser : " & Robot_New.Name (A_Robot) &
" depose la brique dans la case" &
Integer'Image (Robot_New.Box_Number (A_Robot)));
Expertsystem.Put_Line (" ");
Robot_New.Modify (A_Robot, The_Occupation => False);
return True;
end if;
end Regle_Caser;
Regle_Saisir:
-- (classe => robot, tache => prendre)
-- (classe => brique, lieu => tas, taille=> <x> )
-- !(classe => brique, lieu => tas, taille=> (> <x>))
--------------------------------------------------------
declare
function Robot_Match
(R : Expertsystem.Reference) 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);
end Robot_Match;
function Brick_Match
(B : Expertsystem.Reference) return Boolean is
begin
return Brick_New.Is_The_Place
(Of_Brick => B,
The_Place => Brick_New.Tas) and then
Brick_New.The_Greatest_On_Heap (Brick => B);
end Brick_Match;
function Robot_Ok is
new Expertsystem.Collection.Findone (Robot_Match);
function Brick_Ok is
new Expertsystem.Collection.Findone (Brick_Match);
begin
A_Brick := Brick_Ok (Brick_New.All_Bricks);
A_Robot := Robot_Ok (Robot_New.All_Robots);
if Expertsystem.Collection.Isnotnull (A_Robot) and
Expertsystem.Collection.Isnotnull (A_Brick) then
Robot_New.Modify (A_Robot, The_Occupation => True);
Brick_New.Modify (A_Brick,
The_Place => Brick_New.Pince);
Robot_New.Modify (A_Robot,
The_Task => Robot_New.Deposer);
Expertsystem.Put_Line
("RegleSaisir : " & Robot_New.Name (A_Robot) &
" prend brique (taille=" &
Integer'Image (Brick_New.Size (A_Brick)) &
" / couleur = " &
Brick_New.Tcolor'Image (Brick_New.Color (A_Brick)));
Expertsystem.Put_Line (" ");
return True;
end if;
end Regle_Saisir;
Regle_Arreter:
-- (classe => robot, tache => prendre)
-- !(classe => brique, lieu => tas)
-----------------------------------------
declare
function Robot_Match
(R : Expertsystem.Reference) return Boolean is
begin
return Robot_New.Is_The_Task
(Of_Robot => R,
The_Task => Robot_New.Prendre);
end Robot_Match;
function Brick_Match
(B : Expertsystem.Reference) return Boolean is
begin
return Brick_New.Is_The_Place
(Of_Brick => B, The_Place => Brick_New.Tas);
end Brick_Match;
function Robot_Ok is
new Expertsystem.Collection.Findone (Robot_Match);
function Brick_Ok is
new Expertsystem.Collection.Findone (Brick_Match);
begin
A_Brick := Brick_Ok (Brick_New.All_Bricks);
A_Robot := Robot_Ok (Robot_New.All_Robots);
if Expertsystem.Collection.Isnull (A_Brick) and
Expertsystem.Collection.Isnotnull (A_Robot) then
Expertsystem.Put_Line
("RegleArreter : " & Robot_New.Name (A_Robot) &
(" se suicide (plus de briques)"));
Expertsystem.Put_Line (" ");
Robot_New.Suicide (Of_Robot => A_Robot);
return True;
end if;
end Regle_Arreter;
return False;
end Peutmettreenboite;
------------------------------------------------------------------------------
procedure Mettreenboite is
begin
loop
exit when not Peutmettreenboite;
end loop;
end Mettreenboite;
------------------------------------------------------------------------------
procedure Miseenboite is
begin
Robot_New.Create;
Brick_New.Create;
loop
Mettreenboite;
-- autres contextes a traiter
exit;
end loop;
end Miseenboite;
end Robotetbrique;
begin
Robotetbrique.Miseenboite;
end Mise_En_Casier;