solvers.md (5400B)
1 # Solvers 2 3 This document contains a list cube solvers supported by this library. 4 Some solvers require the cube to be in a certain state before they can 5 be used - see below for details. 6 7 ## The H48 optimal solver 8 9 An HTM-optimal solver using fully-symmetric pruning tables. For details 10 about how this solver works, see [h48.md](./h48.md). For benchmarks see 11 [benchmarks/benchmarks.md](../benchmarks/benchmarks.md). 12 13 * Name: of the form `h8hXk2` for `X` from 0 to 11, or `h48h0k4`. The name 14 `optimal` is an alias for `h48h7k2`. 15 * Requisites: none. 16 * Moveset: HTM (all 18 basic moves). 17 * Data size: 59MB for `h48h0k4`, from 115MB to 59GB for `h48hXk2` 18 (roughly 59MB + 2<sup>X</sup>*56MB). 19 20 ## Coordinate solvers 21 22 Various solvers to solve different substeps, commonly used for Fewest 23 Moves solving. 24 25 The names start either with `coord_` or with `mcoord_`, and the last two 26 letters denote a transformation to adjust the starting orientation. For 27 example, `coord_EO_UR` solves the edge orientation on the RL axis. 28 29 For simplicity and for compatibility with nissy-classic, some aliases 30 are provided. 31 32 ### Edge orientation 33 34 Solve the edge orientation on the FB axis. NISS can be used. 35 36 * Name: `coord_EO_xx`, where `xx` denotes the rotation. 37 Provided aliases are: 38 * `eofb` for `coord_EO_UF` (EO on FB) 39 * `eorl` for `coord_EO_UR` (EO on RL) 40 * `eoud` for `coord_EO_FD` (EO on UD) 41 * Requisites: none. 42 * Moveset: HTM (all 18 basic moves). The ending quarter turns are 43 always clockwise. 44 * Data size: 1.5KB. 45 46 ### Domino reduction 47 48 Solve the domino reduction on the UD axis. NISS can be used. 49 50 * Name: `coord_DR_xx`, where `xx` denotes the rotation. 51 Provided aliases are: 52 * `drud` for `coord_DR_UF` (DR on UD) 53 * `drrl` for `coord_DR_RF` (DR on RL) 54 * `drfb` for `coord_DR_FD` (DR on FB) 55 * Requisites: none. 56 * Moveset: HTM (all 18 basic moves). The ending quarter turns are 57 always clockwise. 58 * Data size: 72MB. 59 60 ### Domino reduction from edge orientation 61 62 Solve the domino reduction on UD from edge orientation on FB. 63 NISS can be used. 64 65 * Name: `coord_DREO_xx`, where `xx` denotes the rotation. 66 Provided aliases are: 67 * `drud-eofb` for `coord_DREO_UF` (DR on UD from EO on FB) 68 * `drrl-eofb` for `coord_DREO_RF` (DR on RL from EO on FB) 69 * `drud-eorl` for `coord_DREO_UR` (DR on UD from EO on RL) 70 * `drfb-eorl` for `coord_DREO_RU` (DR on FB from EO on RL) 71 * `drrl-eoud` for `coord_DREO_FR` (DR on RL from EO on UD) 72 * `drfb-eoud` for `coord_DREO_FD` (DR on FB from EO on UD) 73 * Requisites: edge orientation must be solved on FB. 74 * Moveset: {U, U', U2, D, D', D2, R2, L2, F2, B2}. 75 The ending quarter turns are always clockwise. 76 * Data size: 91KB. 77 78 ### HTR from domino reduction 79 80 Solve the half turn reduction from domino reduction on UD. 81 NISS can be used. 82 83 * Name: `coord_HTR_xx`, where `xx` denotes the rotation. 84 Provided aliases are: 85 * `htr-drud` for `coord_DR_UF` (HTR from DR on UD) 86 * `htr-drrl` for `coord_DR_LF` (HTR from DR on RL) 87 * `htr-drfb` for `coord_DR_BU` (HTR from DR on FB) 88 * Requisites: domino reduction is solved on UD. 89 * Moveset: {U, U', U2, D, R2, L2, F2, B2}. The ending quarter turns are 90 always clockwise. Moreover, solutions are filtered so that at most 91 one D move is used, and it will always appear before any U or U' move. 92 Solutions with consecutive U / U2 / U' / D moves are also filtered out. 93 This solver will produce therefore fewer solutions than nissy-classic. 94 * Data size: 265KB. 95 96 ### Leave slice from domino reduction 97 98 Solve all but the E-layer from domino reduction on UD. 99 The E-layer centers may not be solved. NISS will not be used. 100 101 * Name: `coord_DRSLICE_xx`, where `xx` denotes the rotation. 102 Provided aliases are: 103 * `drudslice` for `coord_DRSLICE_UF` (Leave slice from DR on UD) 104 * `drrlslice` for `coord_DRSLICE_LF` (Leave slice from DR on RL) 105 * `drfbslice` for `coord_DRSLICE_BU` (Leave slice from DR on FB) 106 * Requisites: domino reduction is solved on UD. 107 * Moveset: {U, U', U2, R2, L2, F2, B2}. 108 * Data size: 54MB. 109 110 ### Solve all from domino reduction 111 112 Solve the whole cube from domino reduction on UD. 113 NISS will not be used. 114 115 * Name: `coord_DRFIN_xx`, where `xx` denotes the rotation. 116 Provided aliases are: 117 * `drudfin` for `coord_DRSLICE_UF` (Solve from DR on UD) 118 * `drrlfin` for `coord_DRSLICE_LF` (Solve from DR on RL) 119 * `drfbfin` for `coord_DRSLICE_BU` (Solve from DR on FB) 120 * Requisites: domino reduction is solved on UD. 121 * Moveset: {U, U', U2, D, D', D2, R2, L2, F2, B2}. 122 * Data size: 54MB. 123 124 ### Undocumented coordinate solvers 125 126 There are some coordinate solvers that have not been listed above. These 127 are generally not very useful on their own, but instead they are combined 128 to produce some of the more complex coordinate solvers above. 129 130 These solvers include: 131 132 * `coord_CPEPE_xx`: solve the permutation of the corners and of the E-layer 133 edges. Requires DR to be solved on UD. 134 * `coord_DRFINNOE_xx`: like the "leave slice" solver, but the U and D 135 layers are going to be adjusted so that centers are solved. We chose 136 to use `coord_DRSLICE_xx` as described above as it may produce shorter 137 solutions, and it is easier to filter out duplicates (solutions that 138 differ only by how they affect the E-layer). 139 140 ## Planned future solvers 141 142 The following solvers are planned to be introduced in the future: 143 144 * Finish from HTR 145 * JZP / Axial reduction, from EO or direct 146 * Finish / leave double slice from JZP