1 (defun move-to (col row)
2 (patom "\033[" row ";" col "H" nil)
12 (patom "hello, world")
16 (setq stack '("*" "**" "***" "****" "*****" "******" "*******"))
20 (defun display-string (x y str)
26 (defun display-stack (x y stack)
28 (display-string x y (car stack))
29 (display-stack x (1+ y) (cdr stack)))))
32 (defun clear-stack (x y)
36 (clear-stack x (1- y))
43 (cond (list (1+ (length (cdr list))))
48 (defun stack-pos (y stack)
52 (defun display-stacks (x y stacks)
55 (display-stack x (stack-pos y (car stacks)) (car stacks))
56 (display-stacks (+ x 20) y (cdr stacks)))
62 (display-stacks 0 20 stacks)
68 (cond (l (1+ (length (cdr l)))) (0))
71 (defun reset-stacks ()
72 (setq stacks (list stack nil nil))
83 (cond ((= n 0) (car list))
84 ((nth (cdr list) (1- n)))
88 (defun replace (list pos member)
89 (cond ((= pos 0) (cons member (cdr list)))
90 ((cons (car list) (replace (cdr list) (1- pos) member)))
94 (defun move-piece (from to)
95 (let ((from-stack (nth stacks from))
96 (to-stack (nth stacks to))
97 (piece (car from-stack)))
98 (setq from-stack (cdr from-stack))
99 (setq to-stack (cons piece to-stack))
100 (setq stacks (replace stacks from from-stack))
101 (setq stacks (replace stacks to to-stack))
107 (defun _hanoi (n from to use)
115 (_hanoi (1- n) from use to)
116 (_hanoi 1 from to use)
117 (_hanoi (1- n) use to from)
124 (setq len (reset-stacks))