This project aims to create website with a Rubiks cube application, with solvers based on traditional methods and some AI solvers as well.
- Develop a C++ Rubiks cube, of NxN 'dimension', which has all of the required manipulations, has an API, etc.
- Create Docker website
- Develop Python code to interface between a user and the Cube, including graphical representations.
- Develop Python/C++ based traditional solvers (i.e. algorithmic)
- Develop AI solvers (Keras/Tensorflow)
- Cube development [Cube.cpp]:
- Representation established [constructor/destructor]
- Printing to terminal [DisplayInTerminal]
- Front rotation (CW) implemented [Front]
- Front/Back established [Front, Back]
- Top/Bottom established [Top, Bottom]
- Interface for development established [IOfunctions.cpp]
- Check if solved code [IsSolved]
- Left/Right established [Left, Right]
- Established Middle Vertical and Horizontal rotations
- Cube development [Cube.cpp]:
- (Low priority, implement check if broken in ExecuteCubeDefinitions)
- Develop API
- Visualisation code for the cube - python?
- Website development
- Docker environment
- Website development
- Rotate only acts on mFace, could change it to work on any face like Spiral, so that it can act on mMiddleFace in MiddleVertical & MiddleHorizontal
- Possible: Instead of iterating through a face, could load values into row vector and iterate through these (i.e. in the MiddleVertical replacement steps)?
- Spiral &c, may have isNotInmTempFace removed?
- RowCalcFormatting do you need break after return?
- MiddleVertical & MiddleHorizontal swap mMiddleFace & mFace roles in early lines to remove need to switch?
- MiddleVertical & MiddleHorizontal replacement replace only row not face?
- Possible (with major efficiency gains & major recoding): Store mCube, prespiraled. I.e. in constructor spiral it.
- Rotating Horizontal only needs to initialise centre negative values once?
- Do I need mMiddleFace?
- Terminal Display store each line in string and print?
- MiddleVertical & MiddleHorizontal use integers above mCube max size, possible integer overflow - soln negative mcube face instead?
- entering 2 into dimension input {IOfunctions} loops infinitely
- Sim above: Input handling is off. dim=mh3 gives infinite loop
- 1x1 cubes render incorrectly & probably need an edge case for this