rendered paste body#____________________________________________________________________________
# 8-Puzzle Problem using BFS, DFS, iterative deepening, best-first-search, A*
import search
from search import *
class Eight_Puzzle(Problem):
def __init__(self, puzzle = None, dict = None):
self.goal = (0, 1, 2, 3, 4, 5, 6, 7, 8)
self.puzzle = puzzle
self.dict = dict or {}
def successor(self):
next_stage = None
if 0 in (self.puzzle[0]):
possible1 = (self.puzzle(1),self.puzzle(0),self.puzzle(2),self.puzzle(3),self.puzzle(4),self.puzzle(5),self.puzzle(6),self.puzzle(7),self.puzzle(8))
possible2 = (self.puzzle(3),self.puzzle(1),self.puzzle(2),self.puzzle(0),self.puzzle(4),self.puzzle(5),self.puzzle(6),self.puzzle(7),self.puzzle(8))
next_stage = (possible1, possible2)
return next_stage
if 0 in (self.puzzle[1]):
possible1 = (self.puzzle(1),self.puzzle(0),self.puzzle(2),self.puzzle(3),self.puzzle(4),self.puzzle(5),self.puzzle(6),self.puzzle(7),self.puzzle(8))
possible2 = (self.puzzle(0),self.puzzle(2),self.puzzle(1),self.puzzle(3),self.puzzle(4),self.puzzle(5),self.puzzle(6),self.puzzle(7),self.puzzle(8))
possible3 = (self.puzzle(0),self.puzzle(4),self.puzzle(2),self.puzzle(3),self.puzzle(1),self.puzzle(5),self.puzzle(6),self.puzzle(7),self.puzzle(8))
next_stage = (possible1, possible2, possible3)
return next_stage