1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
|
<!doctype html>
<html lang="en">
<head>
<title> Nissy </title>
<meta name="viewport" content="width=device-width" />
<link rel="stylesheet" type="text/css" href="/style-3.css">
<link rel="icon" href="/favicon.png">
<meta charset="utf-8">
</head>
<body>
<h1>Nissy</h1>
<p class=subtitle>A Rubik's cube solver and FMC assistant</p>
<p>
Nissy is a command-line Rubik's cube solver. It can find optimal solutions
for random positions using techniques from Herbert Kociemba's
<a href="http://kociemba.org/cube.htm">Cube Explorer</a> and
Tomas Rokicki's
<a href="https://github.com/rokici/cube20src/blob/master/nxopt.md">nxopt</a>.
With 4 cores at 2.5GHz and using about 3Gb of RAM, Nissy can find an optimal
solution in about a minute on average.
</p>
<p>
Nissy aims at being a complete tool
for FMC (Fewest Moves Challenge) practice. It can solve different steps
of Thistlethwaite's algorithm (also know as DR/HTR) and cans use NISS
(Normal-Inverse Scramble Switch).
</p>
<p>
You should use Nissy if:
</p>
<ul>
<li>
You want to analyze your DR solutions or check for multiple optimal
(or sub-optimal) solutions for EO/DR/HTR or similar steps.
</li>
<li>
You just want a Rubik's cube solver and you like command line interfaces.
</li>
<li>
You want an alternative to Cube Explorer.
</li>
</ul>
<p>
To get started, head to the <a href="/download/">download</a> page.
</p>
<p>
You can also look at its source code by cloning the git repository:
</p>
<pre>
<code>git clone https://git.tronto.net/nissy-classic</code>
</pre>
<p>
For a summary of changes and a list of older versions see the bottom of
this page. Some versions (for example 1.0) are not available directly,
but can be obtained from the git repository.
</p>
<h2 id="Installation">Installation</h2>
<p>
You can get the latest version of nissy at the following links:
</p>
<table class="dltable">
<tr>
<td></td>
<td><strong>Source code</strong></td>
<td><strong>Windows executable</strong></td>
</tr>
<tr>
<td><strong>Latest version</strong></td>
<td><a href="/nissy-2.0.5.tar.gz">nissy-2.0.5.tar.gz (67Kb)</a></td>
<td><a href="/nissy-2.0.5.exe">nissy-2.0.5.exe (714Kb)</a></td>
</tr>
</table>
<h3>System requirements</h3>
<p>
A full installation of nissy requires about 3.1Gb of space,
of which 2.3Gb are occupied by the huge pruning table for fast optimal solving,
and running it requires the same amount of RAM.
One can choose to never use this function and not to install the relative
pruning table. There is an alternative (slower)
optimal solving function that uses about 500Mb of RAM.
When generating the pruning tables automatically (see the section Tables below),
at least 5.3Gb or RAM are required.
</p>
<h3>Windows</h3>
<p>
Try downloading and executing in a terminal the file <code>nissy.exe</code>,
then follow the instructions in the <strong>Tables</strong> section below for
installing the pruning tables.
If <code>nissy.exe</code> does not work, you can try following the UNIX instructions
in WSL (Windows Subsystem for Linux) or in a similar environment.
</p>
<h3>UNIX (Linux, MacOS, *BSD...)</h3>
<p>
Download the source archive (.tar.gz). Extract it
with your favorite archive program, for example with
</p>
<pre><code>tar -xvzf nissy-VERSION.tar.gz</code></pre>
<p>
Open a terminal in the directory just extracted.
If you wish, edit the <code>Makefile</code> to match your local configuration
(this is usually not necessary, but you may want to change the
<code>PREFIX</code> variable to change the installation path) and run
<pre><code>make</code></pre>
<p>
followed by
</p>
<pre><code>make install</code></pre>
<p>
Then follow the instructions below to install the pruning tables.
</p>
<h3>Tables</h3>
<p>
Once you have installed nissy, run
</p>
<pre><code>nissy gen</code></pre>
<p>
to generate all the tables that Nissy will ever need.
Running this command requires around 5.3Gb of RAM, and it can take some time
(about 90 minutes on my 9 year old but laptop, with 4 CPU threads).
</p>
<p>
Some unnecessary technical detail: by default this command is going to use
at most 64 threads. If you want you can choose to use more threads (if your CPU
is very powerful) or fewer threads (if you for example want to run this command
in the background while you do other stuff) with the <code>-t</code> option, for
example <code>nissy gen -t 1</code>.
</p>
<p>
Alternatively, you can
<a href="/nissy-tables-2.0.4.zip">download all the tables (1.7Gb)</a> and
copy them into the correct folder (see manual page, <code>ENVIRONMENT</code>
section). On UNIX operating systems this folder is either
<code>.nissy/tables</code> in the user's home directory or
<code>$XDG_DATA_HOME/nissy/tables</code> if the XDG variable is configured.
On Windows it is the same directory as the <code>nissy.exe</code> executable
file.
</p>
<h2 id="Upgrade">Upgrading</h2>
<p>
<strong> Upgrading from 2.0.4 to 2.0.5: </strong>
Follow the general upgrading instructions below, now other step required.
</p>
<p>
<strong> Important note for upgrading to 2.0.4:</strong>
A bug in 2.0.3 and earlier versions caused HTR-related tables to be
generated incorrectly on ARM platforms (Mac M1, Android...).
If you are upgrading to 2.0.4 on such a device, you need to re-generate
these tables. You can do this by removing all the files wiht <code>htr</code>
in their name and let nissy re-generate them (after upgrading), or by
downloading the <a href="/nissy-tables-2.0.4.zip">new tables</a> and
replacing the old ones.
</p>
<p>
<strong> General upgrading instrutions </strong>
If you already have nissy installed and you want to upgrade to a more
recent version, you can simply repeat the installation process:
</p>
<ul>
<li>
On Windows: simply replace nissy.exe with the new file with the same name.
</li>
<li>
On UNIX systems: download the new version of the source code, extract it in
a new folder and run <code>make</code> and <code>make install</code> again.
</li>
</ul>
<p>
Between each version new table files might have been added, or old ones
may be not used anymore. Nissy will deal with this automatically unless
otherwise reported in this page (see above).
</p>
<h2>Version history</h2>
<h3>Nissy v2</h3>
<table class=dltable>
<tr>
<td><strong>Version</strong></td>
<td><strong>Date</strong></td>
<td><strong>Comment</strong></td>
</tr>
<tr>
<td><a href="/nissy-2.0.5.tar.gz">2.0.5</a></td>
<td>2023-08-16</td>
<td>Bugfix: DR from EO did not check both sides</td>
</tr>
<tr>
<td><a href="/nissy-2.0.4.tar.gz">2.0.4</a></td>
<td>2023-05-03</td>
<td>Fixed bug on ARM; added corners-dr step</td>
</tr>
<tr>
<td><a href="/nissy-2.0.3.tar.gz">2.0.3</a></td>
<td>2022-09-10</td>
<td>Fixed bug in scramble dr</td>
</tr>
<tr>
<td><a href="/nissy-2.0.2.tar.gz">2.0.2</a></td>
<td>2022-06-01</td>
<td>Improved table generation speed</td>
</tr>
<tr>
<td><a href="/nissy-2.0.1.tar.gz">2.0.1</a></td>
<td>2022-02-22</td>
<td>Bugfix release</td>
</tr>
<tr>
<td>2.0</td>
<td>2021-12-29</td>
<td>Rewritten from scratch; much faster optimal solver</td>
</tr>
</table>
<h3>Nissy v1</h3>
<p>
Nissy v1 was released in 2020. It was slow, full of bugs and the code
was quite terrible. But in practice it got its job done most of the time.
</p>
<hr class="line">
<nav class="bottom">
<table class="footer">
<tr>
<td class="contact">
<a href="https://sebastiano.tronto.net">sebastiano.tronto.net</a>
</td>
<td class="hosted">
<a href="mailto:sebastiano@tronto.net">
sebastiano@tronto.net
</a>
</td>
</tr>
</table>
</nav>
</body>
</html>
|