Adds a new class, ReversibleMaze, to identify mazes that can be reversed.
Makes ThickMaze a ReversibleMaze.
Adds an exception, IllegalCellPosition, to be thrown if a special cell (start or goal) is in bounds but not assigned to a legal cell (e.g. is on a wall).
Adds a class enum, SpecialMazeType to represent the types of start and goal cells, and a function to translate them into string names.
Added test case for ThickMaze to make sure it obeys reversibility rules.
This PR accomplishes the following:
ReversibleMaze
, to identify mazes that can be reversed.ThickMaze
aReversibleMaze
.IllegalCellPosition
, to be thrown if a special cell (start or goal) is in bounds but not assigned to a legal cell (e.g. is on a wall).SpecialMazeType
to represent the types of start and goal cells, and a function to translate them into string names.ThickMaze
to make sure it obeys reversibility rules.