aboutsummaryrefslogtreecommitdiff
path: root/doc/solvers.md
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2025-08-08 09:43:15 +0200
committerSebastiano Tronto <sebastiano@tronto.net>2025-08-08 09:43:15 +0200
commit82904137aff5a7de8b9aee55485c1b0217e0b2e6 (patch)
treeaa0837e6f2fd17d34fe2f66bafa49f631fac65b1 /doc/solvers.md
parentc90781c8602bd2ff17270105c98277ac79665ac8 (diff)
downloadnissy-core-82904137aff5a7de8b9aee55485c1b0217e0b2e6.tar.gz
nissy-core-82904137aff5a7de8b9aee55485c1b0217e0b2e6.zip
Added solver documentation
Diffstat (limited to 'doc/solvers.md')
-rw-r--r--doc/solvers.md146
1 files changed, 146 insertions, 0 deletions
diff --git a/doc/solvers.md b/doc/solvers.md
new file mode 100644
index 0000000..e90a40b
--- /dev/null
+++ b/doc/solvers.md
@@ -0,0 +1,146 @@
1# Solvers
2
3This document contains a list cube solvers supported by this library.
4Some solvers require the cube to be in a certain state before they can
5be used - see below for details.
6
7## The H48 optimal solver
8
9An HTM-optimal solver using fully-symmetric pruning tables. For details
10about 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
22Various solvers to solve different substeps, commonly used for Fewest
23Moves solving.
24
25The names start either with `coord_` or with `mcoord_`, and the last two
26letters denote a transformation to adjust the starting orientation. For
27example, `coord_EO_UR` solves the edge orientation on the RL axis.
28
29For simplicity and for compatibility with nissy-classic, some aliases
30are provided.
31
32### Edge orientation
33
34Solve 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
48Solve 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
62Solve the domino reduction on UD from edge orientation on FB.
63NISS 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
80Solve the half turn reduction from domino reduction on UD.
81NISS 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
98Solve all but the E-layer from domino reduction on UD.
99The 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
112Solve the whole cube from domino reduction on UD.
113NISS 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
126There are some coordinate solvers that have not been listed above. These
127are generally not very useful on their own, but instead they are combined
128to produce some of the more complex coordinate solvers above.
129
130These 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
142The 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

Generated with cgit - Back to sebastiano.tronto.net