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
|
.Dd November 2021
.Dt NISSY 1
.Os
.Sh NAME
.Nm nissy
.Nd a Rubik's cube solver and FMC assistant
.
.Sh SYNOPSIS
.Nm Op Fl b
.Nm
.Ar command
.Op options...
.
.Sh DESCRIPTION
.Nm
is a Rubik's Cube solver. Its optimal solver function uses Kociemba's one-step
algorithm (huge optimal solver), and its performance is comparable to that
of Kociemba's implementation in Cube Explorer when using a single CPU
thread, and much faster when using multiple threads.
nissy can also solve different substeps of the Thistlethwaite's algorithm
and more.
.Pp
When run without any argument an interactive shell is launched, otherwise
the provided
.Ar command
is executed and nissy terminates. If the option
.Fl b
is given, every argument after it is ignored and the shell is launched without
any prompt or welcome message. This can be used to run nissy in batch mode,
for example writing a list of commands in a
.Ar file
(one per line) and running
.Ar nissy -b < file
.Pp
The commands that can be run in the interactive shell are the same that can
be run non-interactively and are provided below.
.
.Sh COMMANDS
The available
.Ar commands
are the following:
.
.Bl -tag -width Ds
.
.It Nm commands
List all available commands.
.
.It Nm gen Op Fl t Ar N
Generate all tables used by nissy. Run this to complete your installation.
If
.Ar N
is specified,
.Ar N
CPU threads will be used (defaults to 1).
.
.It Nm help Op Ar command
Display help. If no
.Ar command
is given, a generic help message is printed, otherwise a specific help
relative to
.Ar command
is returned.
.
.It Nm print Ar scramble
Display a text-only description of the cube obtained after applying
.Ar scramble .
.
.It Nm quit
Quit nissy.
.
.It Nm solve Ar step Oo Ar options Oc Ar scramble
Solve the given
.Ar step
on the given
.Ar scramble.
By default it finds only one (shortest) solution, without using niss, and it
displays the number of moves at the end of the line.
.
The options for the
.Ar solve
command are the following:
.
.Bl -tag -width Ds
.
.It Fl m Ar min
Only look for solution that are at least
.Ar min
moves long.
.
.It Fl M Ar MAX
Only look for solution that are at most
.Ar MAX
moves long.
.
.It Fl s Ar n
Try to find
.Ar n
solutions.
.
.It Fl a
Print all solutions: some solutions are filtered out by default for some
steps, for examples EOs that finish with F\(aq, with this options they are not.
.
.It Fl n
Allow use of NISS.
.
.It Fl o
Only find solutions that require the minimum number of moves.
.
.It Fl p
Plain style: do not print the number of moves.
.
.It Fl t Ar n
Use
.Ar n
CPU threads. By default nissy uses only 1 thread. Using more than one
thread will improve performance, but the optimal number depends on your
machine and operating system. Generally, using one less than the number
of threads of your CPU works quite well.
.
.It Fl v
Verbose mode: print some information during the search and print each solution
as it is found instead of only printing them all together at the end.
.
.
.El
.
.It Nm steps
List all available
.Ar steps
for the
.Ar solve
command.
.
.It Nm version
Display version information.
.
.El
.
.Sh ENVIRONMENT
Data is stored in the folder pointed to by
.Nm $NISSYDATA.
If that variable is unset the folder
.Nm $XDG_DATA_HOME/nissy
or
.Nm $HOME/.nissy
is used instead. If none of this environment variables is defined
(e.g. in a non-UNIX system), the current folder is used.
.
.Sh EXAMPLES
.
The command:
.Dl nissy solve -v \(dqR\(aqU\(aqFD2L2FR2U2R2BD2LB2D\(aqB2L\(aqR\(aqBD2BU2LU2R\(aqU\(aqF\(dq
.
Returns:
.Dl Found 0 solutions, searching depth 0...
.Dl Found 0 solutions, searching depth 1...
.Dl (some more lines)
.Dl Found 0 solutions, searching depth 16...
.Dl D2 F\(aq U2 D2 F\(aq L2 D R2 D F B2 R\(aq L2 F\(aq U\(aq D
.Dl D2 F\(aq U2 D2 F\(aq L2 D R2 D F B2 R\(aq L2 F\(aq U\(aq D (16)
.
The command:
.Dl nissy solve eofb -m 4 -M 5 -n -s 6 \(dqR\(aqU\(aqFD2L2 FR2 U2R2BD2 L B2 D\(aq B2 L\(aq R\(aq\(dq
.
Returns:
.Dl U B U\(aq B (4)
.Dl U2 D2 B (B) (4)
.Dl U2 F R2 F (4)
.Dl U2 B U2 B (4)
.Dl U2 B (U B) (4)
.Dl U\(aq B U B (4)
.
.Sh AUTHORS
.An Sebastiano Tronto Aq Mt sebastiano.tronto@gmail.com
.
.Sh SOURCE CODE
Source code is available at
.Lk https://github.com/sebastianotronto/nissy
|