From e51c4b17743cef05e93070de5db06ffd3d6cab8c Mon Sep 17 00:00:00 2001 From: Petr Baudis Date: Mon, 11 Oct 2010 01:26:23 +0200 Subject: [PATCH] Moggy group_atari_check(): Remove the rest of playout_data dependencies --- playout/moggy.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/playout/moggy.c b/playout/moggy.c index 4a51456..ed76345 100644 --- a/playout/moggy.c +++ b/playout/moggy.c @@ -257,10 +257,9 @@ can_be_rescued(struct board *b, group_t group, enum stone color, enum mq_tag tag /* ladder != NULL implies to always enqueue all relevant moves. */ static void -group_atari_check(struct playout_policy *p, struct board *b, group_t group, enum stone to_play, +group_atari_check(unsigned int alwaysccaprate, struct board *b, group_t group, enum stone to_play, struct move_queue *q, coord_t *ladder, enum mq_tag tag) { - struct moggy_policy *pp = p->data; int qmoves_prev = q->moves; /* We don't use @to_play almost anywhere since any moves here are good @@ -270,14 +269,14 @@ group_atari_check(struct playout_policy *p, struct board *b, group_t group, enum coord_t lib = board_group_info(b, group).lib[0]; assert(color != S_OFFBOARD && color != S_NONE); - if (PLDEBUGL(5)) + if (DEBUGL(5)) fprintf(stderr, "[%s] atariiiiiiiii %s of color %d\n", coord2sstr(group, b), coord2sstr(lib, b), color); assert(board_at(b, lib) == S_NONE); /* Can we capture some neighbor? */ bool ccap = can_countercapture(b, color, group, to_play, q, tag); - if (ccap && !ladder && pp->alwaysccaprate > fast_random(100)) + if (ccap && !ladder && alwaysccaprate > fast_random(100)) return; /* Otherwise, do not save kos. */ @@ -293,7 +292,7 @@ group_atari_check(struct playout_policy *p, struct board *b, group_t group, enum if (to_play != color && !can_be_rescued(b, group, color, tag)) return; #endif - if (PLDEBUGL(6)) + if (DEBUGL(6)) fprintf(stderr, "...escape route valid\n"); /* ...or play out ladders. */ @@ -305,7 +304,7 @@ group_atari_check(struct playout_policy *p, struct board *b, group_t group, enum else *ladder = lib; } - if (PLDEBUGL(6)) + if (DEBUGL(6)) fprintf(stderr, "...no ladder\n"); if (to_play != color) { @@ -349,7 +348,7 @@ global_atari_check(struct playout_policy *p, struct board *b, enum stone to_play struct moggy_policy *pp = p->data; if (pp->capcheckall) { for (int g = 0; g < b->clen; g++) - group_atari_check(p, b, group_at(b, group_base(b->c[g])), to_play, q, NULL, MQ_GATARI); + group_atari_check(pp->alwaysccaprate, b, group_at(b, group_base(b->c[g])), to_play, q, NULL, MQ_GATARI); if (PLDEBUGL(5)) mq_print(q, b, "Global atari"); return; @@ -357,7 +356,7 @@ global_atari_check(struct playout_policy *p, struct board *b, enum stone to_play int g_base = fast_random(b->clen); for (int g = g_base; g < b->clen; g++) { - group_atari_check(p, b, group_at(b, group_base(b->c[g])), to_play, q, NULL, MQ_GATARI); + group_atari_check(pp->alwaysccaprate, b, group_at(b, group_base(b->c[g])), to_play, q, NULL, MQ_GATARI); if (q->moves > 0) { /* XXX: Try carrying on. */ if (PLDEBUGL(5)) @@ -366,7 +365,7 @@ global_atari_check(struct playout_policy *p, struct board *b, enum stone to_play } } for (int g = 0; g < g_base; g++) { - group_atari_check(p, b, group_at(b, group_base(b->c[g])), to_play, q, NULL, MQ_GATARI); + group_atari_check(pp->alwaysccaprate, b, group_at(b, group_base(b->c[g])), to_play, q, NULL, MQ_GATARI); if (q->moves > 0) { /* XXX: Try carrying on. */ if (PLDEBUGL(5)) @@ -380,16 +379,18 @@ global_atari_check(struct playout_policy *p, struct board *b, enum stone to_play static void local_atari_check(struct playout_policy *p, struct board *b, struct move *m, struct move_queue *q) { + struct moggy_policy *pp = p->data; + /* Did the opponent play a self-atari? */ if (board_group_info(b, group_at(b, m->coord)).libs == 1) { - group_atari_check(p, b, group_at(b, m->coord), stone_other(m->color), q, NULL, MQ_LATARI); + group_atari_check(pp->alwaysccaprate, b, group_at(b, m->coord), stone_other(m->color), q, NULL, MQ_LATARI); } foreach_neighbor(b, m->coord, { group_t g = group_at(b, c); if (!g || board_group_info(b, g).libs != 1) continue; - group_atari_check(p, b, g, stone_other(m->color), q, NULL, MQ_LATARI); + group_atari_check(pp->alwaysccaprate, b, g, stone_other(m->color), q, NULL, MQ_LATARI); }); if (PLDEBUGL(5)) @@ -828,7 +829,7 @@ playout_moggy_assess_group(struct playout_policy *p, struct prior_map *map, grou /* This group, sir, is in atari! */ coord_t ladder = pass; - group_atari_check(p, b, g, map->to_play, &q, &ladder, 0); + group_atari_check(pp->alwaysccaprate, b, g, map->to_play, &q, &ladder, 0); while (q.moves--) { coord_t coord = q.move[q.moves]; -- 2.11.4.GIT