aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/core/cube.h34
-rw-r--r--src/nissy.c22
2 files changed, 22 insertions, 34 deletions
diff --git a/src/core/cube.h b/src/core/cube.h
index 798c99c..a045e55 100644
--- a/src/core/cube.h
+++ b/src/core/cube.h
@@ -178,33 +178,18 @@ getcube(int64_t ep, int64_t eo, int64_t cp, int64_t co)
178 178
179/******************************************************************************/ 179/******************************************************************************/
180 180
181STATIC cube_t readcube(const char *, const char *); 181STATIC cube_t readcube(const char *);
182STATIC int64_t writecube(const char *, cube_t, size_t n, char [n]); 182STATIC int64_t writecube(cube_t, size_t n, char [n]);
183STATIC uint8_t readco(const char *); 183STATIC uint8_t readco(const char *);
184STATIC uint8_t readcp(const char *); 184STATIC uint8_t readcp(const char *);
185STATIC uint8_t readeo(const char *); 185STATIC uint8_t readeo(const char *);
186STATIC uint8_t readep(const char *); 186STATIC uint8_t readep(const char *);
187 187
188STATIC cube_t readcube_B32(const char *);
189STATIC int64_t writecube_B32(cube_t, size_t n, char [n]);
190
191STATIC uint8_t b32toedge(char); 188STATIC uint8_t b32toedge(char);
192STATIC uint8_t b32tocorner(char); 189STATIC uint8_t b32tocorner(char);
193STATIC char edgetob32(uint8_t); 190STATIC char edgetob32(uint8_t);
194STATIC char cornertob32(uint8_t); 191STATIC char cornertob32(uint8_t);
195 192
196STATIC cube_t
197readcube(const char *format, const char *buf)
198{
199 return readcube_B32(buf);
200}
201
202STATIC int64_t
203writecube(const char *format, cube_t cube, size_t buf_size, char buf[buf_size])
204{
205 return writecube_B32(cube, buf_size, buf);
206}
207
208STATIC uint8_t 193STATIC uint8_t
209readco(const char *str) 194readco(const char *str)
210{ 195{
@@ -259,7 +244,7 @@ readep(const char *str)
259} 244}
260 245
261STATIC cube_t 246STATIC cube_t
262readcube_B32(const char *buf) 247readcube(const char *buf)
263{ 248{
264 int i; 249 int i;
265 uint8_t c[8], e[12]; 250 uint8_t c[8], e[12];
@@ -267,7 +252,7 @@ readcube_B32(const char *buf)
267 for (i = 0; i < 8; i++) { 252 for (i = 0; i < 8; i++) {
268 c[i] = b32tocorner(buf[i]); 253 c[i] = b32tocorner(buf[i]);
269 if (c[i] == UINT8_ERROR) { 254 if (c[i] == UINT8_ERROR) {
270 LOG("Error reading B32 corner %d ", i); 255 LOG("Error reading corner %d ", i);
271 if (buf[i] == 0) { 256 if (buf[i] == 0) {
272 LOG("(string terminated early)\n"); 257 LOG("(string terminated early)\n");
273 } else { 258 } else {
@@ -278,7 +263,7 @@ readcube_B32(const char *buf)
278 } 263 }
279 264
280 if (buf[8] != '=') { 265 if (buf[8] != '=') {
281 LOG("Error reading B32 separator: a single '=' " 266 LOG("Error reading separator: a single '=' "
282 "must be used to separate edges and corners\n"); 267 "must be used to separate edges and corners\n");
283 return ZERO_CUBE; 268 return ZERO_CUBE;
284 } 269 }
@@ -286,7 +271,7 @@ readcube_B32(const char *buf)
286 for (i = 0; i < 12; i++) { 271 for (i = 0; i < 12; i++) {
287 e[i] = b32toedge(buf[i+9]); 272 e[i] = b32toedge(buf[i+9]);
288 if (e[i] == UINT8_ERROR) { 273 if (e[i] == UINT8_ERROR) {
289 LOG("Error reading B32 edge %d ", i); 274 LOG("Error reading edge %d ", i);
290 if (buf[i+9] == 0) { 275 if (buf[i+9] == 0) {
291 LOG("(string terminated early)\n"); 276 LOG("(string terminated early)\n");
292 } else { 277 } else {
@@ -300,7 +285,7 @@ readcube_B32(const char *buf)
300} 285}
301 286
302STATIC int64_t 287STATIC int64_t
303writecube_B32(cube_t cube, size_t buf_size, char buf[buf_size]) 288writecube(cube_t cube, size_t buf_size, char buf[buf_size])
304{ 289{
305 int i; 290 int i;
306 uint8_t corner[8], edge[12]; 291 uint8_t corner[8], edge[12];
@@ -322,7 +307,10 @@ writecube_B32(cube_t cube, size_t buf_size, char buf[buf_size])
322 for (i = 0; i < 12; i++) 307 for (i = 0; i < 12; i++)
323 buf[i+9] = edgetob32(edge[i]); 308 buf[i+9] = edgetob32(edge[i]);
324 309
325 buf[21] = '\0'; 310/* TODO */
311 buf[21] = '=';
312 buf[22] = 'A';
313 buf[23] = '\0';
326 314
327 return NISSY_OK; 315 return NISSY_OK;
328} 316}
diff --git a/src/nissy.c b/src/nissy.c
index fb3cc11..8aa0334 100644
--- a/src/nissy.c
+++ b/src/nissy.c
@@ -119,7 +119,7 @@ distribution_equal(
119STATIC long long 119STATIC long long
120write_result(cube_t cube, char result[static NISSY_SIZE_CUBE]) 120write_result(cube_t cube, char result[static NISSY_SIZE_CUBE])
121{ 121{
122 writecube("B32", cube, NISSY_SIZE_CUBE, result); 122 writecube(cube, NISSY_SIZE_CUBE, result);
123 123
124 if (!issolvable(cube)) { 124 if (!issolvable(cube)) {
125 LOG("Warning: resulting cube is not solvable\n"); 125 LOG("Warning: resulting cube is not solvable\n");
@@ -151,7 +151,7 @@ nissy_compose(
151 cube_t c, p, res; 151 cube_t c, p, res;
152 long long err; 152 long long err;
153 153
154 c = readcube("B32", cube); 154 c = readcube(cube);
155 155
156 if (!isconsistent(c)) { 156 if (!isconsistent(c)) {
157 LOG("[compose] Error: the given cube is invalid\n"); 157 LOG("[compose] Error: the given cube is invalid\n");
@@ -159,7 +159,7 @@ nissy_compose(
159 goto nissy_compose_error; 159 goto nissy_compose_error;
160 } 160 }
161 161
162 p = readcube("B32", permutation); 162 p = readcube(permutation);
163 163
164 if (!isconsistent(p)) { 164 if (!isconsistent(p)) {
165 LOG("[compose] Error: given permutation is invalid\n"); 165 LOG("[compose] Error: given permutation is invalid\n");
@@ -178,7 +178,7 @@ nissy_compose(
178 return write_result(res, result); 178 return write_result(res, result);
179 179
180nissy_compose_error: 180nissy_compose_error:
181 writecube("B32", ZERO_CUBE, NISSY_SIZE_CUBE, result); 181 writecube(ZERO_CUBE, NISSY_SIZE_CUBE, result);
182 return err; 182 return err;
183} 183}
184 184
@@ -191,7 +191,7 @@ nissy_inverse(
191 cube_t c, res; 191 cube_t c, res;
192 long long err; 192 long long err;
193 193
194 c = readcube("B32", cube); 194 c = readcube(cube);
195 195
196 if (iserror(c)) { 196 if (iserror(c)) {
197 LOG("[inverse] Error: the given cube is invalid\n"); 197 LOG("[inverse] Error: the given cube is invalid\n");
@@ -210,7 +210,7 @@ nissy_inverse(
210 return write_result(res, result); 210 return write_result(res, result);
211 211
212nissy_inverse_error: 212nissy_inverse_error:
213 writecube("B32", ZERO_CUBE, NISSY_SIZE_CUBE, result); 213 writecube(ZERO_CUBE, NISSY_SIZE_CUBE, result);
214 return err; 214 return err;
215} 215}
216 216
@@ -230,7 +230,7 @@ nissy_applymoves(
230 goto nissy_applymoves_error; 230 goto nissy_applymoves_error;
231 } 231 }
232 232
233 c = readcube("B32", cube); 233 c = readcube(cube);
234 234
235 if (!isconsistent(c)) { 235 if (!isconsistent(c)) {
236 LOG("[applymoves] Error: given cube is invalid\n"); 236 LOG("[applymoves] Error: given cube is invalid\n");
@@ -249,7 +249,7 @@ nissy_applymoves(
249 return write_result(res, result); 249 return write_result(res, result);
250 250
251nissy_applymoves_error: 251nissy_applymoves_error:
252 writecube("B32", ZERO_CUBE, NISSY_SIZE_CUBE, result); 252 writecube(ZERO_CUBE, NISSY_SIZE_CUBE, result);
253 return err; 253 return err;
254} 254}
255 255
@@ -263,7 +263,7 @@ nissy_applytrans(
263 cube_t c, res; 263 cube_t c, res;
264 long long err; 264 long long err;
265 265
266 c = readcube("B32", cube); 266 c = readcube(cube);
267 267
268 if (!isconsistent(c)) { 268 if (!isconsistent(c)) {
269 LOG("[applytrans] Error: given cube is invalid\n"); 269 LOG("[applytrans] Error: given cube is invalid\n");
@@ -282,7 +282,7 @@ nissy_applytrans(
282 return write_result(res, result); 282 return write_result(res, result);
283 283
284nissy_applytrans_error: 284nissy_applytrans_error:
285 writecube("B32", ZERO_CUBE, NISSY_SIZE_CUBE, result); 285 writecube(ZERO_CUBE, NISSY_SIZE_CUBE, result);
286 return err; 286 return err;
287} 287}
288 288
@@ -507,7 +507,7 @@ nissy_solve(
507 return NISSY_ERROR_NULL_POINTER; 507 return NISSY_ERROR_NULL_POINTER;
508 } 508 }
509 509
510 c = readcube_B32(cube); 510 c = readcube(cube);
511 511
512 if (!isconsistent(c)) { 512 if (!isconsistent(c)) {
513 LOG("[solve] Error: cube is invalid\n"); 513 LOG("[solve] Error: cube is invalid\n");

Generated with cgit - Back to sebastiano.tronto.net