DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦6095635bd⟧ TextFile

    Length: 1280 (0x500)
    Types: TextFile
    Names: »TOWER.PAS«

Derivation

└─⟦49cd49952⟧ Bits:30009431 50004848
    └─⟦0c326962c⟧ 
        └─⟦this⟧ »TOWER.PAS« 

TextFile

PROGRAM TOWERSOFHANOI (INPUT, OUTPUT);

TYPE  POLE = (LEFT, MIDDLE, RIGHT) ;
      POSITIVEINTEGER = 1..MAXINT ;

VAR   NUMBEROFDISKS : POSITIVEINTEGER ;

PROCEDURE MOVE (N : POSITIVEINTEGER ;
                SOURCE, AUXILIARY, DESTINATION : POLE) ;

   PROCEDURE MOVEDISK ;

      PROCEDURE PRINTPOLE (P : POLE) ;
         BEGIN
            CASE P OF
              LEFT : WRITE ('LEFT') ;
              MIDDLE : WRITE ('MIDDLE') ;
              RIGHT : WRITE ('RIGHT')  
            END
         END ; (* PRINTPOLE *)


      BEGIN
        WRITE ('MOVE A DISK FROM ') ;  PRINTPOLE (SOURCE) ;
        WRITE (' TO ') ;  PRINTPOLE (DESTINATION) ;
        WRITELN
      END ; (* MOVEADISKFROMSOURCETODESTINATION *)

BEGIN
   IF N=1 THEN MOVEDISK
          ELSE BEGIN
                  MOVE (N-1, SOURCE, DESTINATION, AUXILIARY) ;
                  MOVEDISK ;
                  MOVE (N-1, AUXILIARY, SOURCE, DESTINATION)
               END
END ; (* MOVE *)
BEGIN
  READ (NUMBEROFDISKS) ;

  WRITELN ('FOR', NUMBEROFDISKS:3, ' DISKS ',       
           'THE REQUIRED MOVES ARE :') ; WRITELN ;
  MOVE (NUMBEROFDISKS, LEFT, MIDDLE, RIGHT)
END. «eof»