aboutsummaryrefslogtreecommitdiff
path: root/src/nissy.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/nissy.c63
1 files changed, 57 insertions, 6 deletions
diff --git a/src/nissy.c b/src/nissy.c
index 4a4c0fd..1829d5c 100644
--- a/src/nissy.c
+++ b/src/nissy.c
@@ -110,13 +110,19 @@ STATIC int64_t
110write_result(cube_t cube, char result[static 22]) 110write_result(cube_t cube, char result[static 22])
111{ 111{
112 if (!isconsistent(cube)) { 112 if (!isconsistent(cube)) {
113 LOG("Error: resulting cube is invalid\n");
113 writecube("B32", ZERO_CUBE, result); 114 writecube("B32", ZERO_CUBE, result);
114 return 2; 115 return 8;
115 } 116 }
116 117
117 writecube("B32", cube, result); 118 writecube("B32", cube, result);
118 119
119 return issolvable(cube) ? 0 : 1; 120 if (!issolvable(cube)) {
121 LOG("Warning: resulting cube is not solvable\n");
122 return 9;
123 }
124
125 return 0;
120} 126}
121 127
122int64_t 128int64_t
@@ -129,7 +135,19 @@ nissy_compose(
129 cube_t c, p, res; 135 cube_t c, p, res;
130 136
131 c = readcube("B32", cube); 137 c = readcube("B32", cube);
138
139 if (!isconsistent(c)) {
140 LOG("Error in nissy_compose: given cube is invalid\n");
141 return 1;
142 }
143
132 p = readcube("B32", permutation); 144 p = readcube("B32", permutation);
145
146 if (!isconsistent(p)) {
147 LOG("Error in nissy_compose: given permutation is invalid\n");
148 return 2;
149 }
150
133 res = compose(c, p); 151 res = compose(c, p);
134 152
135 return write_result(res, result); 153 return write_result(res, result);
@@ -144,6 +162,12 @@ nissy_inverse(
144 cube_t c, res; 162 cube_t c, res;
145 163
146 c = readcube("B32", cube); 164 c = readcube("B32", cube);
165
166 if (iserror(c)) {
167 LOG("Error in nissy_inverse: given cube is invalid\n");
168 return 1;
169 }
170
147 res = inverse(c); 171 res = inverse(c);
148 172
149 return write_result(res, result); 173 return write_result(res, result);
@@ -159,6 +183,12 @@ nissy_applymoves(
159 cube_t c, res; 183 cube_t c, res;
160 184
161 c = readcube("B32", cube); 185 c = readcube("B32", cube);
186
187 if (!isconsistent(c)) {
188 LOG("Error in nissy_applymoves: given cube is invalid\n");
189 return 1;
190 }
191
162 res = applymoves(c, moves); 192 res = applymoves(c, moves);
163 193
164 return write_result(res, result); 194 return write_result(res, result);
@@ -174,6 +204,12 @@ nissy_applytrans(
174 cube_t c, res; 204 cube_t c, res;
175 205
176 c = readcube("B32", cube); 206 c = readcube("B32", cube);
207
208 if (!isconsistent(c)) {
209 LOG("Error in nissy_applytrans: given cube is invalid\n");
210 return 1;
211 }
212
177 res = applytrans(c, transformation); 213 res = applytrans(c, transformation);
178 214
179 return write_result(res, result); 215 return write_result(res, result);
@@ -189,6 +225,11 @@ nissy_frommoves(
189 225
190 res = applymoves(SOLVED_CUBE, moves); 226 res = applymoves(SOLVED_CUBE, moves);
191 227
228 if (!isconsistent(res)) {
229 /* Moves must be invalid */
230 return 1;
231 }
232
192 return write_result(res, result); 233 return write_result(res, result);
193} 234}
194 235
@@ -200,12 +241,20 @@ nissy_convert(
200 char *result 241 char *result
201) 242)
202{ 243{
244 int ret;
203 cube_t c; 245 cube_t c;
204 246
205 c = readcube(format_in, cube_string); 247 c = readcube(format_in, cube_string);
206 writecube(format_out, c, result);
207 248
208 return isconsistent(c) ? 0 : 2; 249 if (iserror(c))
250 return 1;
251
252 ret = writecube(format_out, c, result);
253
254 if (ret != 0)
255 return 2;
256
257 return isconsistent(c) ? 0 : 3;
209} 258}
210 259
211int64_t 260int64_t
@@ -387,8 +436,10 @@ nissy_solve(
387 return -1; 436 return -1;
388 } else { 437 } else {
389 return THREADS > 1 ? 438 return THREADS > 1 ?
390 solve_h48_multithread(c, minmoves, maxmoves, maxsolutions, data, solutions) : 439 solve_h48_multithread(c, minmoves,
391 solve_h48(c, minmoves, maxmoves, maxsolutions, data, solutions); 440 maxmoves, maxsolutions, data, solutions) :
441 solve_h48(c, minmoves,
442 maxmoves, maxsolutions, data, solutions);
392 } 443 }
393 } else if (!strcmp(solver, "simple")) { 444 } else if (!strcmp(solver, "simple")) {
394 return solve_simple( 445 return solve_simple(

Generated with cgit - Back to sebastiano.tronto.net