Program 03 Program To Show The Steps To Solve 8-Puzzle Problem
Program 03 Program To Show The Steps To Solve 8-Puzzle Problem
; Data Structures
(defstruct problem
(initial-node)
(goal-test)
(operators))
(defstruct node
(state)
(goal-dist))
; 8 PUZZLE DEFINITIONS
(defun(8puzz-goal-test state)
(equal state '(1 2 3 4 5 6 7 8 -))
)
(setq 8puzz-problem
(make-problem
:initial-node (make-node :state '(1 2 3 4 5 6 7 - 8))
:goal-test #'8puzz-goal-test
:operators (list #'move-blank-up #'move-blank-down #'move-blank-left
#'move-blank-right)))
(setq (node-goal-dist (problem-initial-node 8puzz-problem))
(8puzz-goal-dist (problem-initial-node 8puzz-problem)))
(defun(test8-dfs )
(General-Search 8puzz-problem #'DFS-queue))
(defun( test8-bfs )
(General-Search 8puzz-problem #'BFS-queue))
(defun(test8-a* )
(General-Search 8puzz-problem #'A*-queue))
; QUEUING FUNCTIONS
; UTILITY FUNCTIONS