Creates a new subclass of ThickMazeGenerator, namely ThickMazeGeneratorByHomomorphism, which takes in a pointer to a MazeGenerator and can then use the MazeGenerator via the Homomorphism<Maze, ThickMaze> to produce ThickMazes without having to explicitly call the Homomorphism.
Adds test cases to test the effects of applying Symmetry transformations to ThickMazes.
Extracts the wall ranking test code out of Maze, which checks that both Positions on either side of a wall rank to the same WallID, and that for every WallID, some Position ranks to it.
Extracts the wall unranking test code out of MazeGenerator, which checks that a WallID unranks into two Positions, both of which rank back to the same WallID.
Adds some operators to Dimensions2D to make it easier to work with.
This PR does the following:
ThickMazeGenerator
, namelyThickMazeGeneratorByHomomorphism
, which takes in a pointer to aMazeGenerator
and can then use theMazeGenerator
via theHomomorphism<Maze, ThickMaze>
to produceThickMaze
s without having to explicitly call theHomomorphism
.Symmetry
transformations toThickMaze
s.Maze
, which checks that bothPosition
s on either side of a wall rank to the sameWallID
, and that for everyWallID
, somePosition
ranks to it.MazeGenerator
, which checks that aWallID
unranks into twoPositions
, both of which rank back to the sameWallID
.Dimensions2D
to make it easier to work with.