!!!Towers of Hanoi

General Information

Author: 	Datasoft \\
Language: 	LISP \\
Compiler/Interpreter: 	InterLisp/65 \\

{{{
(HANOI OTHER MOVE DISPLAY HLIN CADR LOC VTAB GOXY)
(DEFINEQ HANOI '(LAMBDA NIL (PROG (ONE TWO THREE) (GR 20) (PAGE) (POKE 752 1) (TAB 4) (PRIN1 (QUOTE -ONE-)) (TAB 17) (PRIN1 (QUOTE -TWO-)) (TAB 29) (PRINT (QUOTE -THREE-)) (COL 1) (HLIN 13 13 20) (HLIN 11 15 22) (HLIN 9 17 24) (HLIN 7 19 26) (HLIN 5 21 28) (HLIN 3 23 30) (HLIN 1 25 32) (SETQ ONE (QUOTE (0 1 2 3 4 5 6))) (MOVE 7 (QUOTE ONE) (QUOTE THREE)) (READC) (SOUND 0 0 0 0) (POKE 752 0)))
)
(DEFINEQ OTHER '(LAMBDA (X Y) (COND ((EQ X (QUOTE ONE)) (COND ((EQ Y (QUOTE TWO)) (QUOTE THREE)) (T (QUOTE TWO)))) ((EQ X (QUOTE TWO)) (COND ((EQ Y (QUOTE ONE)) (QUOTE THREE)) (T (QUOTE ONE)))) ((EQ X (QUOTE THREE)) (COND ((EQ Y (QUOTE ONE)) (QUOTE TWO)) (T (QUOTE ONE))))))
)
(DEFINEQ MOVE '(LAMBDA (D E F) (COND ((EQ D 1) (PROGN (SET F (CONS (CAR (EVAL E)) (EVAL F))) (SET E (CDR (EVAL E))) (DISPLAY E F))) (T (PROGN (MOVE (SUB D 1) E (OTHER E F)) (SET F (CONS (CAR (EVAL E)) (EVAL F))) (SET E (CDR (EVAL E))) (DISPLAY E F) (MOVE (SUB D 1) (OTHER E F) F)))))
)
(DEFINEQ DISPLAY '(LAMBDA (X Y) (PROG NIL (SETQ Z (CAR (EVAL Y))) (COL 0) (HLIN (SUB (CADR (ASSOC X LOC)) (+ Z Z)) (+ (CADR (ASSOC X LOC)) (+ Z Z)) (+ (+ Z Z) 20)) (COL 1) (HLIN (SUB (CADR (ASSOC Y LOC)) (+ Z Z)) (+ (CADR (ASSOC Y LOC)) (+ Z Z)) (+ (+ Z Z) 20)) (GOXY 10 2) (PRIN1 (LIST (QUOTE MOVE) X (QUOTE TO) Y)) (PRIN1 (QUOTE "  ")) (SOUND 0 (+ 120 (* 10 Z)) 10 15)))
)
(DEFINEQ HLIN '(LAMBDA (X1 X2 Y) (PROGN (PLOT X1 Y) (DRAW X2 Y)))
)
(DEFINEQ CADR '(LAMBDA (X) (CAR (CDR X)))
)
(SETQ LOC '((ONE 13) (TWO 40) (THREE 66))
)
(DEFINEQ VTAB '(LAMBDA (R) (POKE 656 R))
)
(DEFINEQ GOXY '(LAMBDA (X Y) (PROGN (VTAB Y) (TAB X)))
)
NIL
}}}