KubeSolver 1.0 ============== Copyrights & Author: Jakub Straszewski, 2020 General ------- The program is able to solve 3x3 Rubik's cube. The most prominent usecase it the ability to easly generate algorithms for particular cases. It's very easy to generate things like: - Generation of algorithms for any last-layer subset (PLL, ZBLL), OLL, OLLCP, last slot + EO. - finding sequences for crosses, x-crosses, eo-crosses. It supports limited generators, and it can include all standard moves (RUF..), wide moves(lru...), slice moves(MES) and rotations(xyz). It implements a relatively robust brute-force algorithm. The simple two-phase solver is there for completness but it's not particularly good or fast. Architecture ------------ KubeSolver is a command-line application. It reads commands from standard input and writes output to standard output. Example usecases: ---------------- 1) Basic alg generation in.txt: F R U R' U' F' kubesolver.exe < in.txt > out.txt out.txt: INFO:KubeSolver 1.0 (C) Jakub Straszewski 2020 INFO:Searching 1 move solutions... INFO:Searching 2 move solutions... INFO:Searching 3 move solutions... INFO:Searching 4 move solutions... INFO:Searching 5 move solutions... INFO:Searching 6 move solutions... F U R U' R' F' INFO:Searching 7 move solutions... INFO:Searching 8 move solutions... U' R U B U' B' R' U (...) kubesolver.exe --silent < in.txt > out.txt out.txt: F U R U' R' F' U' R U B U' B' R' U (...) 2) This example will reconstruct the given U-perm with MU-gen in.txt: set_gen MU R2 U R U R' U' R' U' R' U R' reconstruct 3) This example shows how to generate OLL algorithms for sune-case. in.txt: init_empty_cube add_f2l add_edges_orientation add_corners_orientation set_gen RULD R U R' U R U2 R' solve 4) This example shows how to solve a yellow cross: init_empty_cube add_edge DR add_edge DL add_edge DB add_edge DF F2 L2 F' D2 L2 F' R2 B2 D2 L2 U2 L' D L B2 R' D' U' R F2 solve ./kubesolver.exe --silent -n 1 < in.txt F2 D' L2 B F' 5) this example shows how to solve a yellow-xcross with a BL slot. init_empty_cube add_edge DR add_edge DL add_edge DB add_edge DF add_edge BL add_corner BLD F2 L2 F' D2 L2 F' R2 B2 D2 L2 U2 L' D L B2 R' D' U' R F2 solve 5) this example shows how to solve a cube with 2-phase algorithm. F2 L2 F' D2 L2 F' R2 B2 D2 L2 U2 L' D L B2 R' D' U' R F2 solve_two_phase L F2 D2 L2 R' B2 U' F2 L B' U' R2 D' B2 D R2 D' L2 F2 U2 B2 U' F2 D Program command line arguments: ------------------------------- --silent - don't print Info: statements --max-number-of-sequences N, -n N - stop search after finding N sequences (default unlimited) --max-depth-of-search N, -d N - only search sequences of length at most N (doesn't apply to two phase solver) List of commands: ----------------- To be done. At the moment examples secion covert most of the api. Commands for setting up a cube: ------------------ set_gen XXX - specified the list of moves allowed in the algorithm. Examples: RU, rRU (wide moves), MES (slice moves), L2U2R2D2BF (only 180 turns). Defaults to RLUDFB init_full_cube (default) init_empty_cube Note: the command below make only sense after calling init_empty_cube add_edge xx add_corner yy add_egdes - adds all edges add_corners - adds all corners add_edges_orientation - all edges that has not been added explicitely by add_edge will be required to have good orientation (according to the LRUD-gen) add_corners_orientation - same as edges add_corners_permutation - all corners that has not been added explicitely by add_corner will be required to be in a correct spot ignoring their orientation. add_f2l - adds all edges and corners for bottom two layers. init_to_current_state - make current state a new starting state. It makes sense if you want to force e.g. a particular OLL (to force a known ZBLL) Commands to solve a cube: ------------------------- solve - generate algorithms solving given cube state reconstruct - generate algorithms solving the reverse cube state solve_two_phase - will solve 3x3 cube using two-phase algorithm ignoring init moves (so it will solve the full cube for specified sequence) Licence ------- Free to use for any use. No guarantees or liability of any kind accepted.