home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol023 / hanoi.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1984-04-29  |  1.2 KB  |  44 lines

  1. (*************************************************
  2. :
  3. :        HANOI PROGRAM
  4. :
  5. :    This one came in and got mixed up with a bunch
  6. :  of other programs and since it did not have a comment
  7. :  section I don't know who to give credit to.  So if
  8. :  anyone recognizes his own style, drop me a line and
  9. :  I will update this spot to give you proper credit.
  10. :     I included it because it is a excellent example
  11. :  of recursive procedures.  It nests deeply and demon-
  12. :  strates how local versus global variable are keep
  13. :  separate.  
  14. ****************************************************)
  15.  
  16. PROGRAM HANOI;
  17. VAR    TOTAL : INTEGER;
  18.  
  19. PROCEDURE MOVETOWER(HEIGHT,
  20.             FROMNEEDLE,
  21.             TONEEDLE,
  22.             USINGNEEDLE : INTEGER);
  23.  
  24.     PROCEDURE MOVEDISK(TAKEOFF, PUTON : INTEGER);
  25.     BEGIN
  26.       WRITELN(TAKEOFF, '->', PUTON)
  27.     END; (* MOVEDISK *)
  28.  
  29. BEGIN (* MOVETOWER *)
  30.   IF HEIGHT > 0
  31.     THEN BEGIN
  32.        MOVETOWER(HEIGHT-1, FROMNEEDLE, USINGNEEDLE, TONEEDLE);
  33.        MOVEDISK(FROMNEEDLE, TONEEDLE);
  34.        MOVETOWER(HEIGHT-1, USINGNEEDLE, TONEEDLE, FROMNEEDLE);
  35.      END
  36. END; (* MOVETOWER *)
  37.  
  38. BEGIN (*  MAIN PROGRAM  *)
  39.   WRITE('ENTER NUMBER OF DISKS?');
  40.   READ(TOTAL);
  41.   WRITELN;
  42.   MOVETOWER( TOTAL, 1, 3, 2)
  43. END.  (*  HANOI  *)
  44.