aboutsummaryrefslogtreecommitdiff
path: root/src/core/cube.h
diff options
context:
space:
mode:
authorenricotenuti <tenutz_27@outlook.it>2024-08-26 17:56:17 +0200
committerenricotenuti <tenutz_27@outlook.it>2024-08-26 17:56:17 +0200
commit81daed66c3415827de7ab6a15c081a8f696f7a95 (patch)
tree9f6a2b7600cbaa6306eb73ef3be6e52fb9084881 /src/core/cube.h
parentf2907e471b3caddc5844bc6994e1cbd249019747 (diff)
downloadnissy-core-81daed66c3415827de7ab6a15c081a8f696f7a95.tar.gz
nissy-core-81daed66c3415827de7ab6a15c081a8f696f7a95.zip
premoves and niss
Diffstat (limited to 'src/core/cube.h')
-rw-r--r--src/core/cube.h107
1 files changed, 107 insertions, 0 deletions
diff --git a/src/core/cube.h b/src/core/cube.h
index fe36f90..b24fb5c 100644
--- a/src/core/cube.h
+++ b/src/core/cube.h
@@ -285,6 +285,113 @@ move(cube_t c, uint8_t m)
285 } 285 }
286} 286}
287 287
288_static cube_t
289premove(cube_t c, uint8_t m){
290 switch (m) {
291 case _move_U:
292 return _premove(U3, c);
293 case _move_U2:
294 return _premove(U2, c);
295 case _move_U3:
296 return _premove(U, c);
297 case _move_D:
298 return _premove(D3, c);
299 case _move_D2:
300 return _premove(D2, c);
301 case _move_D3:
302 return _premove(D, c);
303 case _move_R:
304 return _premove(R3, c);
305 case _move_R2:
306 return _premove(R2, c);
307 case _move_R3:
308 return _premove(R, c);
309 case _move_L:
310 return _premove(L3, c);
311 case _move_L2:
312 return _premove(L2, c);
313 case _move_L3:
314 return _premove(L, c);
315 case _move_F:
316 return _premove(F3, c);
317 case _move_F2:
318 return _premove(F2, c);
319 case _move_F3:
320 return _premove(F, c);
321 case _move_B:
322 return _premove(B3, c);
323 case _move_B2:
324 return _premove(B2, c);
325 case _move_B3:
326 return _premove(B, c);
327 default:
328 LOG("move error, unknown move\n");
329 return zero;
330 }
331}
332_static uint8_t
333invertmove(uint8_t m)
334{
335 switch (m) {
336 case _move_U:
337 return _move_U3;
338 case _move_U2:
339 return _move_U2;
340 case _move_U3:
341 return _move_U;
342 case _move_D:
343 return _move_D3;
344 case _move_D2:
345 return _move_D2;
346 case _move_D3:
347 return _move_D;
348 case _move_R:
349 return _move_R3;
350 case _move_R2:
351 return _move_R2;
352 case _move_R3:
353 return _move_R;
354 case _move_L:
355 return _move_L3;
356 case _move_L2:
357 return _move_L2;
358 case _move_L3:
359 return _move_L;
360 case _move_F:
361 return _move_F3;
362 case _move_F2:
363 return _move_F2;
364 case _move_F3:
365 return _move_F;
366 case _move_B:
367 return _move_B3;
368 case _move_B2:
369 return _move_B2;
370 case _move_B3:
371 return _move_B;
372 default:
373 LOG("invertmove error, unknown move\n");
374 return _error;
375 }
376}
377
378_static uint8_t*
379invertpremoves(uint8_t *moves, uint8_t nmoves)
380{
381 uint8_t i;
382 uint8_t *ret = malloc(nmoves * sizeof(uint8_t));
383
384 for (i = 0; i < nmoves; i++)
385 ret[i] = invertmove(moves[i]);
386
387 // invert elements in the array
388 for (i = 0; i < nmoves / 2; i++)
389 _swap(ret[i], ret[nmoves - i - 1]);
390 return ret;
391}
392
393
394
288/* 395/*
289TODO transform is now relegated to a separated file because it is too long. 396TODO transform is now relegated to a separated file because it is too long.
290It would be nice to make it shorter without loosing performance. 397It would be nice to make it shorter without loosing performance.

Generated with cgit - Back to sebastiano.tronto.net