home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG028.ARK / HANOI.ALG < prev    next >
Text File  |  1984-04-29  |  1KB  |  41 lines

  1. BEGIN
  2. COMMENT  THIS PROGRAM PRINTS THE MOVES REQUIRED TO TRANSFER A TOWER OF 
  3.          ANY HEIGHT FROM NEEDLE 1 TO NEEDLE 3.;
  4.  
  5. STRING TEST;
  6. INTEGER TOTAL;
  7. PROCEDURE MOVETOWER(HEIGHT,FROMNEEDLE,TONEEDLE,USINGNEEDLE);
  8.   INTEGER HEIGHT,FROMNEEDLE,TONEEDLE,USINGNEEDLE;
  9.   BEGIN
  10.     PROCEDURE MOVEDISK(TAKEOFF,PUTON);
  11.       INTEGER TAKEOFF,PUTON;
  12.       BEGIN
  13.         WRITE(TAKEOFF,"   ->",PUTON);
  14.       END;
  15.  
  16.     IF HEIGHT>0 THEN
  17.       BEGIN
  18.         MOVETOWER(HEIGHT-1,FROMNEEDLE,USINGNEEDLE,TONEEDLE);
  19.         MOVEDISK(FROMNEEDLE,TONEEDLE);
  20.         MOVETOWER(HEIGHT-1,USINGNEEDLE,TONEEDLE,FROMNEEDLE);
  21.       END;
  22.   END;%MOVETOWER%
  23.  
  24. BEGIN%HANOI%
  25.    WRITE("THIS PROGRAM WILL PRINT THE MOVES REQUIRED");
  26.    WRITE("TO MOVE A TOWER OF RINGS FROM ONE NEEDLE TO");
  27.    WRITE("ANOTHER.  THERE ARE THREE NEEDLES AND THE RULES");
  28.    WRITE("ARE THAT YOU CAN NEVER MOVE A LARGER RING ON TOP");
  29.    WRITE("OF A SMALLER RING.");
  30.    TEST:="YES";
  31.   WHILE TEST="YES" DO BEGIN
  32.    WRITE("INPUT THE NUMBER OF RINGS");
  33.    READ(TOTAL);
  34.    WRITE("FROM TOWER -> TO TOWER");
  35.    MOVETOWER(TOTAL,1,3,2);
  36.    WRITE("ANOTHER VALUE? ENTER YES OR NO");
  37.    READ(TEST);
  38.  END;
  39. END;
  40. END
  41.