ここ最近、KGSでいろいろなバージョンのZenが打ってます。とにかくどいつもこいつもめちゃめちゃ強く、Zen19BSは今現在6dですし(ごめんなさい。Zen19BSは人間です! しかもZen19BSじゃなくてzen19BSです。ほんと何言ってんだろ…)、Zen19Sは、昨日のEuropean Go Congress 2011のイベントで、林耕三六段に5子で完勝してました。
/* Case 7.
* In very rare cases it turns out we need yet another pass. An
* example is this position:
*
* |.....
* |OOOO.
* |XXXO.
* |.OXO.
* |O.XO.
* +-----
*
* Here the X stones are found tactically dead and therefore the
* corner O stones have been amalgamated with the surrounding
* stones. Since the previous case only allows sacrificing
* INESSENTIAL stones, it fails to take X off the board.
*
* The solution is to look for tactically attackable opponent stones
* that still remain on the board but should be removed.
*/
for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
if (board[pos] == other
&& (worm[pos].unconditional_status == UNKNOWN
|| do_capture_dead_stones)
&& (DRAGON2(pos).safety == DEAD
|| DRAGON2(pos).safety == TACTICALLY_DEAD)
&& worm[pos].attack_codes[0] != 0
&& !is_illegal_ko_capture(worm[pos].attack_points[0], color)) {
DEBUG(DEBUG_AFTERMATH, "Tactically attack %1m at %1m\n",
pos, worm[pos].attack_points[0]);
return worm[pos].attack_points[0];
}
}
for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
if (ON_BOARD(pos)
&& board[pos] == EMPTY
&& is_allowed_move(pos, color)
&& safe_move(pos, color)) {
return pos;
}
}
/* No move found. */
return PASS_MOVE;
}
/* Case 7.
* In very rare cases it turns out we need yet another pass. An
* example is this position:
*
* |.....
* |OOOO.
* |XXXO.
* |.OXO.
* |O.XO.
* +-----
*
* Here the X stones are found tactically dead and therefore the
* corner O stones have been amalgamated with the surrounding
* stones. Since the previous case only allows sacrificing
* INESSENTIAL stones, it fails to take X off the board.
*
* The solution is to look for tactically attackable opponent stones
* that still remain on the board but should be removed.
*/
for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
if (board[pos] == other
&& (worm[pos].unconditional_status == UNKNOWN
|| do_capture_dead_stones)
&& (DRAGON2(pos).safety == DEAD
|| DRAGON2(pos).safety == TACTICALLY_DEAD)
&& worm[pos].attack_codes[0] != 0
&& !is_illegal_ko_capture(worm[pos].attack_points[0], color)) {
DEBUG(DEBUG_AFTERMATH, "Tactically attack %1m at %1m\n",
pos, worm[pos].attack_points[0]);
return worm[pos].attack_points[0];
}
}
for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
if (ON_BOARD(pos)
&& board[pos] == EMPTY
&& (board[SOUTH(pos)] == EMPTY
|| board[WEST(pos)] == EMPTY
|| board[NORTH(pos)] == EMPTY
|| board[EAST(pos)] == EMPTY)
&& is_allowed_move(pos, color)
&& safe_move(pos, color)) {
return pos;
}
}
for (pos = BOARDMIN; pos < BOARDMAX; pos++) {
if (ON_BOARD(pos)
&& board[pos] == EMPTY
&& is_allowed_move(pos, color)
&& safe_move(pos, color)) {
return pos;
}
}
/* No move found. */
return PASS_MOVE;
}