accessed by the individual methods by using the named constantsthe values used to represent the maze wall and tokens could easily be changed if we were so inclined listing the maze py module implements the maze adt using - array from array import array from lliststack import stack class maze define constants to represent contents of the maze cells maze_wall "*path_token "xtried_token "ocreates maze object with all cells marked as open def __init__selfnumrowsnumcols )self _mazecells array dnumrowsnumcols self _startcell none self _exitcell none returns the number of rows in the maze def numrowsself )return self _mazecells numrows(returns the number of columns in the maze def numcolsself )return self _mazecells numcols(fills the indicated cell with "wallmarker def setwallselfrowcol )assert row > and row self numrows(and col > and col self numcols()"cell index out of range self _mazecells setrowcolself maze_wall sets the starting cell position def setstartselfrowcol )assert row > and row self numrows(and col > and col self numcols()"cell index out of range self _startcell _cellpositionrowcol sets the exit cell position def setexitselfrowcol )assert row > and row self numrows(and col > and col self numcols()"cell index out of range self _exitcell _cellpositionrowcol attempts to solve the maze by finding path from the starting cell to the exit returns true if path is found and false otherwise def findpathself )(listing continued