8-Puzzle: Invoking the Search
(defun make-initial-state (tiles)
(defun goal-state-p (state)
(equal (state-tiles state) '(1 2 3 4 5 6 7 8 0)))
(defun next-states (state)
(list (move-blank state :UP)
(move-blank state :RIGHT))))
(defun move-blank (state dir)
(let ((blank-pos (state-blank-pos state))
(new-pos (state-new-pos state dir)))
(T (let ((new-state (copy-state-deeply state)))
(state-swap-pos new-state blank-pos new-pos)
(state-add-action new-state dir)