From a6e76aa5966a4c908e43f894ede05f71b5ba9de3 Mon Sep 17 00:00:00 2001 From: lemonsqueeze Date: Mon, 25 Apr 2016 11:08:23 +0200 Subject: [PATCH] fixed side ladder bug (check countercaptures) . . O . . . . . . O X X X X . O X O . . . . O X X O . . . X X O . . . . O O . . . . . . . . . . . A3 is no ladder --- tactics/ladder.c | 5 ++++- tactics/ladder.h | 6 +++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/tactics/ladder.c b/tactics/ladder.c index add6f43..5dbbac3 100644 --- a/tactics/ladder.c +++ b/tactics/ladder.c @@ -11,8 +11,11 @@ bool -is_border_ladder(struct board *b, coord_t coord, enum stone lcolor) +is_border_ladder(struct board *b, coord_t coord, group_t laddered, enum stone lcolor) { + if (can_countercapture(b, lcolor, laddered, lcolor, NULL, 0)) + return false; + int x = coord_x(coord, b), y = coord_y(coord, b); if (DEBUGL(5)) diff --git a/tactics/ladder.h b/tactics/ladder.h index ad53f80..5bf3d17 100644 --- a/tactics/ladder.h +++ b/tactics/ladder.h @@ -17,8 +17,8 @@ static bool is_ladder(struct board *b, coord_t coord, group_t laddered, bool tes bool wouldbe_ladder(struct board *b, group_t group, coord_t escapelib, coord_t chaselib, enum stone lcolor); -bool is_border_ladder(struct board *b, coord_t coord, enum stone lcolor); -bool is_middle_ladder(struct board *b, coord_t coord, group_t group, enum stone lcolor); +bool is_border_ladder(struct board *b, coord_t coord, group_t laddered, enum stone lcolor); +bool is_middle_ladder(struct board *b, coord_t coord, group_t laddered, enum stone lcolor); static inline bool is_ladder(struct board *b, coord_t coord, group_t laddered, bool test_middle) { @@ -32,7 +32,7 @@ is_ladder(struct board *b, coord_t coord, group_t laddered, bool test_middle) * of ladders we actually meet and want to play. */ if (neighbor_count_at(b, coord, S_OFFBOARD) == 1 && neighbor_count_at(b, coord, lcolor) == 1) { - bool l = is_border_ladder(b, coord, lcolor); + bool l = is_border_ladder(b, coord, laddered, lcolor); if (DEBUGL(6)) fprintf(stderr, "border ladder solution: %d\n", l); return l; } -- 2.11.4.GIT