You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If the parity is not disturbed during move execution, then the edge lattice and corner lattice can be solved separately without affecting each other. That is precisely what Cerb and Mono solvers are based on. They permute the edge peices and the corner peices in different stages without distrubing the rest of the cube. The algorithm is itself fairly simple. In fact, it is probably the closest one could get to an intuitive solve without having to learn multiple move sequences. This algorithm basically comes down to solving the entire cube by a series of swaps. It would be theoritically very easy(not neccessarily fast) to solve the cube using a single algorithm that can swap two peices without affecting the rest of the cube. But alas, such an algorithm does not exist because it is not possible to swap two cubelets on a Rubik's cube without disturbing the other peices. But, we have many algorithms that do something which closely resembles that. For instance, in PLL stage of CPOF, we have the following non-exhaustive list of standard algorithms -
U-Perms and A-Prems that cycle triplets of edge or corner peices in clockwise or counter clockwise directions
H-Perms, E-Perms and Z-Perms that swap two pairs of edge peices while keeping the rest of the cube intact
F-Perms, J-Perms, N-Perms, R-Perms, T-Perms, V-Perms and Y-Perms are the most interesting of the three classes because these algorithms swap a pair of edge peices and a pair of corner peices without altering any other cubelets. Any one of these algorithms can be used to completely solve a Rubik's cube by a series of appropriate swaps.
What's so special about Mono?
Mono Rubik's cube solver is an upgrade over the Cerb solver. Cerb solves the 3x cube in three stages - orientation of corner peices, permuation of corner peices and permutation of edge peices. Mono however combines the corner orientation and permuation steps, thereby making the implementation much simpler and also significantly decreasing the average number of moves in the generated solution.
Usage
Mono uses the same lettering scheme as the cerb solver. Create the edge (Path: EDGE_CONFIG_FILE_PATH) and corner (Path: CORNER_CONFIG_FILE_PATH) configuration files for your scrambled cube and invoke solution(EDGE_CONFIG_FILE_PATH, CORNER_CONFIG_FILE_PATH) function which returns the solution move sequence as a std::string
Tests
These tests were performed using the cerberus simulator.
Test (I)
Stage
Cube State
Move Sequence
Scrambled Cube
B2 D U2 L R2 B' U' R U R' U2 R' D2 R2 U D B' F' U' R2 D' B' F2 D B
Corners Solved
F F' U B' U2 F U' F' U2 F B U' F' D2 L' F F' U B' U2 F U' F' U2 F B U' F' L D2 L2 F2 F' U B' U2 F U' F' U2 F B U' F2 L2 D' L' F F' U B' U2 F U' F' U2 F B U' F' L D L2 F2 F' U B' U2 F U' F' U2 F B U' F2 L2
Edges Solved
F' U B' U2 F U' F' U2 F B U' E' L D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L' E L D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L' M F' U B' U2 F U' F' U2 F B U' M' D' M F' U B' U2 F U' F' U2 F B U' M' D D2 M F' U B' U2 F U' F' U2 F B U' M' D2 M D2 M F' U B' U2 F U' F' U2 F B U' M' D2 M' L2 D' M F' U B' U2 F U' F' U2 F B U' M' D L2 D M F' U B' U2 F U' F' U2 F B U' M' D' F' U B' U2 F U' F' U2 F B U' L' D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L M D2 M F' U B' U2 F U' F' U2 F B U' M' D2 M'
Test (II)
Stage
Cube State
Move Sequence
Scrambled Cube
U F2 B2 U F L' U' F2 L' R2 D L' F2 U' D2 B2 F R' D' B' D2 L' D2 L2 D
Corners Solved
L F2 F' U B' U2 F U' F' U2 F B U' F2 L' L F F' U B' U2 F U' F' U2 F B U' F' L' F' U B' U2 F U' F' U2 F B U' D' F' F' U B' U2 F U' F' U2 F B U' F D D F2 F' U B' U2 F U' F' U2 F B U' F2 D' D' F2 F' U B' U2 F U' F' U2 F B U' F2 D L' F F' U B' U2 F U' F' U2 F B U' F' L
Edges Solved
F' U B' U2 F U' F' U2 F B U' M2 D2 M F' U B' U2 F U' F' U2 F B U' M' D2 M2 D M2 F' U B' U2 F U' F' U2 F B U' M2 D' M' F' U B' U2 F U' F' U2 F B U' M L' D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L D' M2 F' U B' U2 F U' F' U2 F B U' M2 D E2 L D' M F' U B' U2 F U' F' U2 F B U' M' D L' E2 L D' M F' U B' U2 F U' F' U2 F B U' M' D L' M F' U B' U2 F U' F' U2 F B U' M' L2 D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L2 L2 D' M F' U B' U2 F U' F' U2 F B U' M' D L2 E' L D' M F' U B' U2 F U' F' U2 F B U' M' D L' E M2 F' U B' U2 F U' F' U2 F B U' M2 E' L D' M F' U B' U2 F U' F' U2 F B U' M' D L' E
Test (III)
Stage
Cube State
Move Sequence
Scrambled Cube
B2 R2 D2 R2 L' U' B' U2 F L U L' D L' F2 D' U L' F' D' R U2 B2 D2 B2
Corners Solved
D' F2 F' U B' U2 F U' F' U2 F B U' F2 D L2 F2 F' U B' U2 F U' F' U2 F B U' F2 L2 L D F' F' U B' U2 F U' F' U2 F B U' F D' L' D2 F2 F' U B' U2 F U' F' U2 F B U' F2 D2 L' F2 F' U B' U2 F U' F' U2 F B U' F2 L F D' F2 F' U B' U2 F U' F' U2 F B U' F2 D F' D F' F' U B' U2 F U' F' U2 F B U' F D'
Edges Solved
F' U B' U2 F U' F' U2 F B U' L2 D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L2 E' L D' M F' U B' U2 F U' F' U2 F B U' M' D L' E M D2 M F' U B' U2 F U' F' U2 F B U' M' D2 M' M2 D2 M F' U B' U2 F U' F' U2 F B U' M' D2 M2 D M F' U B' U2 F U' F' U2 F B U' M' D' D2 M2 F' U B' U2 F U' F' U2 F B U' M2 D2 M D2 M F' U B' U2 F U' F' U2 F B U' M' D2 M' L D' M F' U B' U2 F U' F' U2 F B U' M' D L' L D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L' E2 L D' M F' U B' U2 F U' F' U2 F B U' M' D L' E2 M2 F' U B' U2 F U' F' U2 F B U' M2 L' D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L E L' D' M F' U B' U2 F U' F' U2 F B U' M' D L E' D' M F' U B' U2 F U' F' U2 F B U' M' D D M2 F' U B' U2 F U' F' U2 F B U' M2 D'
Test (IV)
Stage
Cube State
Move Sequence
Scrambled Cube
L2 F' R' D2 R B' F D' R D' L' D R D2 F R U' R2 F2 D' B2 F' L2 B L2
Corners Solved
D2 L' F F' U B' U2 F U' F' U2 F B U' F' L D2 D F2 F' U B' U2 F U' F' U2 F B U' F2 D' D' L' F F' U B' U2 F U' F' U2 F B U' F' L D L2 F2 F' U B' U2 F U' F' U2 F B U' F2 L2 L' F F' U B' U2 F U' F' U2 F B U' F' L
Edges Solved
F' U B' U2 F U' F' U2 F B U' E' L D' M F' U B' U2 F U' F' U2 F B U' M' D L' E D' M2 F' U B' U2 F U' F' U2 F B U' M2 D L' D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L L2 D' M F' U B' U2 F U' F' U2 F B U' M' D L2 L D M2 F' U B' U2 F U' F' U2 F B U' M2 D' L' M D2 M F' U B' U2 F U' F' U2 F B U' M' D2 M' D2 M F' U B' U2 F U' F' U2 F B U' M' D2 E2 L D' M F' U B' U2 F U' F' U2 F B U' M' D L' E2 M' F' U B' U2 F U' F' U2 F B U' M F' U B' U2 F U' F' U2 F B U' D' M F' U B' U2 F U' F' U2 F B U' M' D D2 M2 F' U B' U2 F U' F' U2 F B U' M2 D2 F' U B' U2 F U' F' U2 F B U'
It is more than just a "solver"!
Unlike Cerb, Mono allows you to edit the solved state files to any configuration you want the cube to have. ./solved/solvedEdges.txt and ./solved/solvedcorners.txt can be edited using the same lettering scheme that you would use to create the configuration files for your scrambled cube. The generated solution would take the cube from the scrambled state, specified by the EDGE_CONFIG and CORNER_CONFIG files to the final state which is given in ./solved/solvedEdges.txt and ./solved/solvedCorners.txt.