diff options
Diffstat (limited to '')
| -rw-r--r-- | src/core/cube.h | 34 | ||||
| -rw-r--r-- | src/nissy.c | 22 |
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 | ||
| 181 | STATIC cube_t readcube(const char *, const char *); | 181 | STATIC cube_t readcube(const char *); |
| 182 | STATIC int64_t writecube(const char *, cube_t, size_t n, char [n]); | 182 | STATIC int64_t writecube(cube_t, size_t n, char [n]); |
| 183 | STATIC uint8_t readco(const char *); | 183 | STATIC uint8_t readco(const char *); |
| 184 | STATIC uint8_t readcp(const char *); | 184 | STATIC uint8_t readcp(const char *); |
| 185 | STATIC uint8_t readeo(const char *); | 185 | STATIC uint8_t readeo(const char *); |
| 186 | STATIC uint8_t readep(const char *); | 186 | STATIC uint8_t readep(const char *); |
| 187 | 187 | ||
| 188 | STATIC cube_t readcube_B32(const char *); | ||
| 189 | STATIC int64_t writecube_B32(cube_t, size_t n, char [n]); | ||
| 190 | |||
| 191 | STATIC uint8_t b32toedge(char); | 188 | STATIC uint8_t b32toedge(char); |
| 192 | STATIC uint8_t b32tocorner(char); | 189 | STATIC uint8_t b32tocorner(char); |
| 193 | STATIC char edgetob32(uint8_t); | 190 | STATIC char edgetob32(uint8_t); |
| 194 | STATIC char cornertob32(uint8_t); | 191 | STATIC char cornertob32(uint8_t); |
| 195 | 192 | ||
| 196 | STATIC cube_t | ||
| 197 | readcube(const char *format, const char *buf) | ||
| 198 | { | ||
| 199 | return readcube_B32(buf); | ||
| 200 | } | ||
| 201 | |||
| 202 | STATIC int64_t | ||
| 203 | writecube(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 | |||
| 208 | STATIC uint8_t | 193 | STATIC uint8_t |
| 209 | readco(const char *str) | 194 | readco(const char *str) |
| 210 | { | 195 | { |
| @@ -259,7 +244,7 @@ readep(const char *str) | |||
| 259 | } | 244 | } |
| 260 | 245 | ||
| 261 | STATIC cube_t | 246 | STATIC cube_t |
| 262 | readcube_B32(const char *buf) | 247 | readcube(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 | ||
| 302 | STATIC int64_t | 287 | STATIC int64_t |
| 303 | writecube_B32(cube_t cube, size_t buf_size, char buf[buf_size]) | 288 | writecube(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( | |||
| 119 | STATIC long long | 119 | STATIC long long |
| 120 | write_result(cube_t cube, char result[static NISSY_SIZE_CUBE]) | 120 | write_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 | ||
| 180 | nissy_compose_error: | 180 | nissy_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 | ||
| 212 | nissy_inverse_error: | 212 | nissy_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 | ||
| 251 | nissy_applymoves_error: | 251 | nissy_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 | ||
| 284 | nissy_applytrans_error: | 284 | nissy_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"); |
