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: 2627 (0xa43) 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⟧ └─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11 └─ ⟦129cab021⟧ »DATA« └─⟦e24fb53b7⟧ └─⟦this⟧
with Towers_Of_Hanoi_Graphic; use Towers_Of_Hanoi_Graphic; separate (Towers_Of_Hanoi_Rules_For_Graphic) package body Moving_Guru_Rule is function Premiss return Join_Descriptor is The_Priority : constant Alias := Alias'(P); The_Source : constant Alias := Alias'(S); The_Destination : constant Alias := Alias'(D); The_Level : constant Alias := Alias'(L); begin return (Movements.Exist ((Count => Is_Equal (1), Priority => Say_It_Is (The_Priority), From_Tower => Say_It_Is (The_Source), To_Tower => Say_It_Is (The_Destination))), Towers.Exist ((Location => Is_Equal (The_Source), Disk_Count => Is_Greater (0) and Say_It_Is (The_Level))), Towers.Exist ((Location => Is_Equal (The_Destination), Disk_Count => Is_Any)), Disks.Exist ((Tower => Is_Equal (The_Source), Level => Is_Equal (The_Level), Size => Is_Any)), Movements.Absent ((Priority => Is_Greater (The_Priority), From_Tower | To_Tower | Count => Is_Any))); end Premiss; procedure Action (The_Facts : Fact.Collection) is The_Movement : Fact.Name renames The_Facts (1); The_Source : Fact.Name renames The_Facts (2); The_Destination : Fact.Name renames The_Facts (3); The_Disk : Fact.Name renames The_Facts (4); The_Disk_Count : Natural; begin The_Disk_Count := Towers.Get (The_Source, Disk_Count); Towers.Change (The_Source, Disk_Count, The_Disk_Count - 1); Delete_Disk (For_Needle => Towers.Get (The_Source, Location), The_Disk => Disks.Get (The_Disk, Level), Its_Size => Disks.Get (The_Disk, Size)); The_Disk_Count := Towers.Get (The_Destination, Disk_Count); Towers.Change (The_Destination, Disk_Count, The_Disk_Count + 1); Print_Disk (For_Needle => Towers.Get (The_Destination, Location), The_Disk => The_Disk_Count + 1, Its_Size => Disks.Get (The_Disk, Size)); Disks.Change (The_Disk, Tower, Towers.Get (The_Destination, Location)); Disks.Change (The_Disk, Level, The_Disk_Count + 1); Movements.Delete (The_Movement); delay 0.8; end Action; end Moving_Guru_Rule;