aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/alg.c40
-rw-r--r--src/alg.h3
-rw-r--r--src/commands.c8
3 files changed, 28 insertions, 23 deletions
diff --git a/src/alg.c b/src/alg.c
index 4c732a3..27af676 100644
--- a/src/alg.c
+++ b/src/alg.c
@@ -474,32 +474,36 @@ unniss(Alg *alg)
474} 474}
475 475
476void 476void
477init_movesets() 477init_moveset(Moveset *ms)
478{ 478{
479 int i, j; 479 int j;
480 uint64_t l, one; 480 uint64_t l, one;
481 Move m, l2, l1; 481 Move m, l2, l1;
482 Moveset *ms;
483 482
484 one = 1; 483 one = 1;
485 484
486 for (i = 0; i < nmoveset; i++) { 485 for (j = 0, m = U; m < NMOVES; m++)
487 ms = all_ms[i]; 486 if (ms->allowed(m))
487 ms->sorted_moves[j++] = m;
488 ms->sorted_moves[j] = NULLMOVE;
488 489
489 for (j = 0, m = U; m < NMOVES; m++) 490 for (l1 = 0; l1 < NMOVES; l1++) {
490 if (ms->allowed(m)) 491 for (l2 = 0; l2 < NMOVES; l2++) {
491 ms->sorted_moves[j++] = m; 492 ms->mask[l2][l1] = 0;
492 ms->sorted_moves[j] = NULLMOVE; 493 for (l=0; ms->sorted_moves[l]!=NULLMOVE; l++) {
493 494 m = ms->sorted_moves[l];
494 for (l1 = 0; l1 < NMOVES; l1++) { 495 if (ms->allowed_next(l2, l1, m))
495 for (l2 = 0; l2 < NMOVES; l2++) { 496 ms->mask[l2][l1] |= (one<<m);
496 ms->mask[l2][l1] = 0;
497 for (l=0; ms->sorted_moves[l]!=NULLMOVE; l++) {
498 m = ms->sorted_moves[l];
499 if (ms->allowed_next(l2, l1, m))
500 ms->mask[l2][l1] |= (one<<m);
501 }
502 } 497 }
503 } 498 }
504 } 499 }
505} 500}
501
502void
503init_all_movesets()
504{
505 int i;
506
507 for (i = 0; i < nmoveset; i++)
508 init_moveset(all_ms[i]);
509}
diff --git a/src/alg.h b/src/alg.h
index ea95a9c..d32c8bf 100644
--- a/src/alg.h
+++ b/src/alg.h
@@ -35,7 +35,8 @@ void print_alglist(AlgList *al, bool l);
35void swapmove(Move *m1, Move *m2); 35void swapmove(Move *m1, Move *m2);
36void unniss(Alg *alg); 36void unniss(Alg *alg);
37 37
38void init_movesets(); 38void init_moveset(Moveset *ms);
39void init_all_movesets();
39 40
40#endif 41#endif
41 42
diff --git a/src/commands.c b/src/commands.c
index 9ecc9c7..740736c 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -367,7 +367,7 @@ solve_exec(CommandArgs *args)
367 Cube c; 367 Cube c;
368 AlgList *sols; 368 AlgList *sols;
369 369
370 init_movesets(); 370 init_all_movesets();
371 init_symcoord(); 371 init_symcoord();
372 372
373 c = apply_alg(args->scramble, (Cube){0}); 373 c = apply_alg(args->scramble, (Cube){0});
@@ -388,7 +388,7 @@ scramble_exec(CommandArgs *args)
388 Alg *scr; 388 Alg *scr;
389 int i; 389 int i;
390 390
391 init_movesets(); 391 init_all_movesets();
392 init_symcoord(); 392 init_symcoord();
393 393
394 srand(time(NULL)); 394 srand(time(NULL));
@@ -407,7 +407,7 @@ gen_exec(CommandArgs *args)
407 int i; 407 int i;
408 408
409 fprintf(stderr, "Generating coordinates...\n"); 409 fprintf(stderr, "Generating coordinates...\n");
410 init_movesets(); 410 init_all_movesets();
411 init_symcoord(); 411 init_symcoord();
412 412
413 fprintf(stderr, "Generating pruning tables...\n"); 413 fprintf(stderr, "Generating pruning tables...\n");
@@ -460,7 +460,7 @@ twophase_exec(CommandArgs *args)
460 Cube c; 460 Cube c;
461 Alg *sol; 461 Alg *sol;
462 462
463 init_movesets(); 463 init_all_movesets();
464 init_symcoord(); 464 init_symcoord();
465 465
466 c = apply_alg(args->scramble, (Cube){0}); 466 c = apply_alg(args->scramble, (Cube){0});

Generated with cgit - Back to sebastiano.tronto.net