home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / lang / forth / pfe-0.000 / pfe-0 / pfe-0.9.13 / demo / hanoi.4th < prev    next >
Encoding:
Text File  |  1994-10-09  |  866 b   |  41 lines

  1. \
  2. \ hanoi.4th --- Towers of Hanoi
  3. \
  4.  
  5. S" FORGET-HANOI" DROP 1- FIND NIP [IF] FORGET-HANOI [THEN]
  6. MARKER FORGET-HANOI
  7.  
  8. : MOVE-ONE    \ c-from c-to ---
  9.         CR ." Move from " SWAP EMIT ."  to " EMIT ;
  10.  
  11. : MOVE        \ c-from c-via c-to n ---
  12.         LOCALS| N C B A |
  13.         N 1 =
  14.         IF
  15.             A C MOVE-ONE
  16.         ELSE
  17.             A C B N 1- RECURSE
  18.             A   C      MOVE-ONE
  19.             B A C N 1- RECURSE
  20.         THEN ;
  21.  
  22. : #IN        \ --- n true | false
  23.         0.            \ -- ud
  24.         PAD 10 ACCEPT        \ -- ud n
  25.         PAD SWAP -TRAILING    \ -- ud c-addr n'
  26.         >NUMBER            \ -- ud' c-addr' n''
  27.         NIP NIP            \ -- u n''
  28.         IF  DROP FALSE  ELSE  TRUE  THEN ;
  29.  
  30. : HANOI        BEGIN
  31.             PAGE
  32.             ." Towers of Hanoi" CR
  33.             ." ===============" CR CR
  34.             BEGIN CR ." How many disks? " #IN 0=
  35.             WHILE CR ." Please enter number, 0 to quit."
  36.             REPEAT ?DUP
  37.         WHILE
  38.             >R [CHAR] A [CHAR] B [CHAR] C R> MOVE
  39.             CR ." key..." KEY DROP
  40.         REPEAT ;
  41.