1 #ifndef ZZGO_TACTICS_SELFATARI_H
2 #define ZZGO_TACTICS_SELFATARI_H
4 /* A fairly reliable elf-atari detector. */
9 /* Check if this move is undesirable self-atari (resulting group would have
10 * only single liberty and not capture anything; ko is allowed); we mostly
11 * want to avoid these moves. The function actually does a rather elaborate
12 * tactical check, allowing self-atari moves that are nakade, eye falsification
14 static bool is_bad_selfatari(struct board
*b
, enum stone color
, coord_t to
);
16 /* Move (color, coord) is a selfatari; this means that it puts a group of
17 * ours in atari; i.e., the group has two liberties now. Return the other
18 * liberty of such a troublesome group if that one is not a self-atari.
19 * (In case (color, coord) is a multi-selfatari, consider a randomly chosen
21 coord_t
selfatari_cousin(struct board
*b
, enum stone color
, coord_t coord
);
24 bool is_bad_selfatari_slow(struct board
*b
, enum stone color
, coord_t to
);
26 is_bad_selfatari(struct board
*b
, enum stone color
, coord_t to
)
28 /* More than one immediate liberty, thumbs up! */
29 if (immediate_liberty_count(b
, to
) > 1)
32 return is_bad_selfatari_slow(b
, color
, to
);