8-Puzzle: Utilities for Manipulating States
(defun state-swap-pos (state pos1 pos2)
(let* ((tiles (state-tiles state))
(setf (nth pos1 tiles) (nth pos2 tiles))
(setf (nth pos2 tiles) temp)))
(defun state-add-action (state action)
(push action (state-actions state)))