aboutsummaryrefslogtreecommitdiff
path: root/src/alg.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/alg.c40
1 files changed, 22 insertions, 18 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}

Generated with cgit - Back to sebastiano.tronto.net