home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ckscripts / hanoi < prev    next >
Text File  |  2020-01-01  |  851b  |  29 lines

  1. #!/usr/local/bin/kermit +
  2.  
  3. ; h a n o i  --  Towers Of Hanoi
  4. ;
  5. ; Author:  Dat Thuc Nguyen, 21 Sep 2001
  6.  
  7. ; \%1 Number_of_Discs
  8. ; \%2 Start_Peg
  9. ; \%3 Goal_Peg
  10.  
  11. define Tower_Of_Hanoi {
  12.     if < \v(argc) 4 exit 1 Usage: hanoi ndisks startpeg goalpeg
  13.     if not numeric \%1 exit 1 \%1: not a number
  14.     if not numeric \%2 exit 1 \%2: not a number
  15.     if not numeric \%3 exit 1 \%3: not a number
  16.     if ( < \%1 1 || < \%2 1 || < \%3 1 ) exit 1 Numbers must be positive
  17.     if ( > \%2 3 || > \%3 3 ) exit 1 Peg must be 1 or 2 or 3
  18.     if ( = \%2 \%3 ) exit 1 Peg numbers must be distinct
  19.     if = 1 \%1 {
  20.         echo Move Top Disc from peg \%2 to peg \%3.
  21.     } else {
  22.         (Tower_Of_Hanoi (- \%1 1) \%2 (- 6 (+ \%2 \%3)))
  23.         Tower_Of_Hanoi 1 \%2 \%3
  24.         (Tower_Of_Hanoi (- \%1 1) (- 6 (+ \%2 \%3)) \%3)
  25.     }
  26. }
  27. Tower_Of_Hanoi \%1 \%2 \%3
  28. exit 0
  29.