[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
答复: [gnugo-devel] Patch suggest
From: |
易野 |
Subject: |
答复: [gnugo-devel] Patch suggest |
Date: |
Fri, 22 Sep 2006 12:45:26 +0800 |
Hi,
hi, there, I read out
two code bugs from the source of 3.7.10, through I am not
sure.
As I do not install CVS, can I put report the way
here?
It would be easier to
read if you could generate a "diff", but this is also ok.
1.
reading.c line 2552
if (potential_move ==
NO_MOVE
|| !is_self_atari(potential_move,
other))
continue;
approxlib(potential_move, other, 1,
libs2);
amend:
if (potential_move ==
NO_MOVE
|| is_self_atari(potential_move,
other))
continue;
/*
do not consider the move self atari, and it may return not liberty
in 'libs2' */
approxlib(potential_move, other, 1,
libs2);
Actually, the point of this routine is to generate sacrifice
moves that cause a shortage of liberty, so we DO want self-ataris here.
but what
is the last line (above) for?
'approxlib' certainly returns 0 for self-ataris stone and
libs2[0] will remain the old value.
2.
value_moves.c line
3299
/* Visit the moves in the standard
lexicographical order */
for (n = 0; n < board_size;
n++)
for (m = board_size-1; m >= 0; m--)
{
pos = POS(m,
n);
move[pos].value = value_move_reasons(pos, color,
pure_threat_value,
our_score,
use_thrashing_dragon_heuristics);
if
(move[pos].value == 0.0)
continue;
amend:
/* Visit the moves in the standard
lexicographical order */
for (n = 0; n < board_size;
n++)
for (m = board_size-1; m >= 0; m--)
{
pos = POS(m, n);
if (board[pos])
continue;
/* why not skip the
intersection where there already occupied? */
That hardly matters, as occupied intersections
won't have any move reasons -- if they do, we may find a
bug...
Arend