From 2abac87d4a60c959b39368ab51cf87624af6931e Mon Sep 17 00:00:00 2001 From: Jean-loup Gailly Date: Fri, 23 Mar 2012 16:18:30 +0100 Subject: [PATCH] uct_pass_is_safe: only require us to capture dead opponents We can deadlock if we also require the opponent to capture our dead stones. See example t-regress/games/2012-03-21-pachi2-Hujisawa-3.sgf Several bugs are exposed by this example, this is the first of several fixes. --- t-regress/games/2012-03-21-pachi2-Hujisawa-3.sgf | 531 +++++++++++++++++++++++ uct/uct.c | 10 +- 2 files changed, 539 insertions(+), 2 deletions(-) create mode 100644 t-regress/games/2012-03-21-pachi2-Hujisawa-3.sgf diff --git a/t-regress/games/2012-03-21-pachi2-Hujisawa-3.sgf b/t-regress/games/2012-03-21-pachi2-Hujisawa-3.sgf new file mode 100644 index 0000000..b15765d --- /dev/null +++ b/t-regress/games/2012-03-21-pachi2-Hujisawa-3.sgf @@ -0,0 +1,531 @@ +(;GM[1]FF[4]CA[UTF-8]AP[CGoban:3]ST[2] +RU[Chinese]SZ[19]KM[0.50]TM[0]OT[5x15 byo-yomi] +PW[pachi2]PB[Hujisawa]WR[4d]BR[3k]DT[2012-03-21]GC[438 +N5:bad! pachi doing fatal self atari because of seki. Should play D7 or A1.]PC[The KGS Go Server at http://www.gokgs.com/]C[pachi2 [4d\]: GTP Engine for pachi2 (white): Pachi Distributed version 9.99 (Satsugen-devel): If you believe you have won but I am still playing, please help me understand by capturing all dead stones. Anyone can send me 'winrate' in private chat to get my assessment of the position. Have a nice game! +] +;B[cp]BL[15]OB[5] +;W[pp]WL[15]OW[5] +;B[nq]BL[15]OB[5] +;W[qn]WL[15]OW[5] +;B[qk]BL[15]OB[5] +;W[qi]WL[15]OW[5] +;B[qg]BL[15]OB[5] +;W[oi]WL[15]OW[5] +;B[ro]BL[15]OB[5] +;W[qo]WL[15]OW[5] +;B[rp]BL[15]OB[5] +;W[qq]WL[15]OW[5] +;B[rn]BL[15]OB[5] +;W[ql]WL[15]OW[5] +;B[rl]BL[15]OB[5] +;W[rm]WL[15]OW[5] +;B[sm]BL[15]OB[5] +;W[qm]WL[15]OW[5] +;B[rj]BL[15]OB[5] +;W[sn]WL[15]OW[5] +;B[sl]BL[15]OB[5] +;W[ri]WL[15]OW[5] +;B[ok]BL[15]OB[5] +;W[pk]WL[15]OW[5] +;B[pj]BL[15]OB[5]C[Ootakamoku [3d\]: b dead +] +;W[pl]WL[15]OW[5] +;B[qj]BL[15]OB[5]C[Ootakamoku [3d\]: t6 hurts now +] +;W[oj]WL[15]OW[5] +;B[pi]BL[15]OB[5] +;W[ph]WL[15]OW[5] +;B[sj]BL[15]OB[5] +;W[si]WL[15]OW[5] +;B[so]BL[15]OB[5]C[Ootakamoku [3d\]: t11 mistake +Ootakamoku [3d\]: could have killed with r12 +] +;W[nk]WL[15]OW[5] +;B[qh]BL[15]OB[5] +;W[kq]WL[15]OW[5] +;B[fq]BL[15]OB[5] +;W[hq]WL[15]OW[5] +;B[jp]BL[15]OB[5] +;W[kp]WL[15]OW[5] +;B[jo]BL[15]OB[5] +;W[jq]WL[15]OW[5] +;B[ko]BL[15]OB[5] +;W[lo]WL[15]OW[5] +;B[ln]BL[15]OB[5] +;W[mn]WL[15]OW[5] +;B[mo]BL[15]OB[5] +;W[lp]WL[15]OW[5] +;B[mm]BL[15]OB[5] +;W[nn]WL[15]OW[5] +;B[km]BL[15]OB[5] +;W[ip]WL[15]OW[5] +;B[nm]BL[15]OB[5] +;W[ol]WL[15]OW[5] +;B[on]BL[15]OB[5] +;W[no]WL[15]OW[5] +;B[oo]BL[15]OB[5] +;W[np]WL[15]OW[5] +;B[op]BL[15]OB[5] +;W[mp]WL[15]OW[5] +;B[pq]BL[15]OB[5] +;W[pr]WL[15]OW[5] +;B[oq]BL[15]OB[5] +;W[qp]WL[15]OW[5] +;B[or]BL[15]OB[5] +;W[ll]WL[15]OW[5] +;B[lm]BL[15]OB[5] +;W[om]WL[15]OW[5] +;B[qr]BL[15]OB[5] +;W[rr]WL[15]OW[5] +;B[ps]BL[15]OB[5] +;W[rq]WL[15]OW[5] +;B[lr]BL[15]OB[5] +;W[il]WL[15]OW[5] +;B[kl]BL[15]OB[5] +;W[io]WL[15]OW[5] +;B[kj]BL[15]OB[5] +;W[kh]WL[15]OW[5] +;B[ji]BL[15]OB[5]C[BOThater36 [5d\]: does b look like 3k? +] +;W[jh]WL[15]OW[5] +;B[ii]BL[15]OB[5] +;W[hg]WL[15]OW[5] +;B[gi]BL[15]OB[5] +;W[pg]WL[15]OW[5] +;B[qf]BL[15]OB[5]C[BOThater36 [5d\]: jlg may pull the plug :-( +] +;W[gl]WL[15]OW[5] +;B[jc]BL[15]OB[5]C[jlg [-\]: I said PROPER HANDICAP in upper case. I will kill pachi at the end of this gamel +] +;W[rs]WL[15]OW[5] +;B[qs]BL[15]OB[5]C[BOThater36 [5d\]: :-( +] +;W[fh]WL[15]OW[5] +;B[ih]BL[15]OB[5]C[BOThater36 [5d\]: at least pachi is winning :-) +] +;W[sk]WL[15]OW[5] +;B[rk]BL[15]OB[5] +;W[ig]WL[15]OW[5] +;B[gh]BL[15]OB[5] +;W[gg]WL[15]OW[5] +;B[fi]BL[15]OB[5] +;W[eh]WL[15]OW[5] +;B[gc]BL[15]OB[5]C[BOThater36 [5d\]: well I have played pachi today, see you guys around :-) +] +;W[dj]WL[15]OW[5] +;B[fk]BL[15]OB[5] +;W[el]WL[15]OW[5] +;B[lk]BL[15]OB[5] +;W[jk]WL[15]OW[5] +;B[mk]BL[15]OB[5] +;W[nl]WL[15]OW[5] +;B[li]BL[15]OB[5] +;W[lh]WL[15]OW[5] +;B[ml]BL[15]OB[5] +;W[mi]WL[15]OW[5] +;B[ki]BL[15]OB[5] +;W[hc]WL[15]OW[5] +;B[hb]BL[15]OB[5] +;W[ic]WL[15]OW[5] +;B[ib]BL[15]OB[5] +;W[ep]WL[15]OW[5] +;B[eq]BL[15]OB[5] +;W[dp]WL[15]OW[5] +;B[dq]BL[15]OB[5] +;W[co]WL[15]OW[5] +;B[bp]BL[15]OB[5] +;W[bo]WL[15]OW[5] +;B[fl]BL[15]OB[5] +;W[fm]WL[15]OW[5] +;B[ek]BL[15]OB[5] +;W[dk]WL[15]OW[5] +;B[ei]BL[15]OB[5] +;W[di]WL[15]OW[5] +;B[em]BL[15]OB[5] +;W[dl]WL[15]OW[5] +;B[gm]BL[15]OB[5] +;W[fn]WL[15]OW[5] +;B[hm]BL[15]OB[5] +;W[im]WL[15]OW[5] +;B[hl]BL[15]OB[5] +;W[hk]WL[15]OW[5] +;B[gk]BL[15]OB[5] +;W[hn]WL[15]OW[5] +;B[hj]BL[15]OB[5] +;W[cd]WL[15]OW[5] +;B[dc]BL[15]OB[5] +;W[dd]WL[15]OW[5] +;B[cc]BL[15]OB[5] +;W[ed]WL[15]OW[5] +;B[fc]BL[15]OB[5] +;W[bc]WL[15]OW[5] +;B[bb]BL[15]OB[5] +;W[ik]WL[15]OW[5] +;B[jn]BL[15]OB[5] +;W[gn]WL[15]OW[5] +;B[gl]BL[15]OB[5] +;W[jm]WL[15]OW[5] +;B[kn]BL[15]OB[5] +;W[in]WL[15]OW[5] +;B[bd]BL[15]OB[5] +;W[be]WL[15]OW[5] +;B[ac]BL[15]OB[5] +;W[pc]WL[15]OW[5] +;B[rc]BL[15]OB[5] +;W[qd]WL[15]OW[5] +;B[rd]BL[15]OB[5] +;W[pf]WL[15]OW[5] +;B[qe]BL[15]OB[5] +;W[hh]WL[15]OW[5] +;B[hi]BL[15]OB[5] +;W[sp]WL[15]OW[5] +;B[sq]BL[15]OB[5] +;W[pe]WL[15]OW[5] +;B[qc]BL[15]OB[5] +;W[br]WL[15]OW[5] +;B[cq]BL[15]OB[5] +;W[gr]WL[15]OW[5] +;B[fr]BL[15]OB[5] +;W[lc]WL[15]OW[5] +;B[kd]BL[15]OB[5] +;W[ld]WL[15]OW[5] +;B[pd]BL[15]OB[5] +;W[od]WL[15]OW[5] +;B[ao]BL[15]OB[5] +;W[an]WL[15]OW[5] +;B[ap]BL[15]OB[5] +;W[bn]WL[15]OW[5] +;B[oc]BL[15]OB[5] +;W[pb]WL[15]OW[5] +;B[ob]BL[15]OB[5] +;W[qd]WL[15]OW[5] +;B[kf]BL[15]OB[5] +;W[pd]WL[15]OW[5] +;B[le]BL[15]OB[5] +;W[jf]WL[15]OW[5] +;B[md]BL[15]OB[5] +;W[mc]WL[15]OW[5] +;B[ge]BL[15]OB[5] +;W[je]WL[15]OW[5] +;B[ke]BL[15]OB[5] +;W[me]WL[15]OW[5] +;B[mf]BL[15]OB[5] +;W[cr]WL[15]OW[5] +;B[dr]BL[15]OB[5] +;W[es]WL[15]OW[5] +;B[fs]BL[15]OB[5] +;W[fd]WL[15]OW[5] +;B[gd]BL[15]OB[5] +;W[ec]WL[15]OW[5] +;B[eb]BL[15]OB[5] +;W[ff]WL[15]OW[5] +;B[fe]BL[15]OB[5] +;W[ee]WL[15]OW[5] +;B[ae]BL[15]OB[5] +;W[bf]WL[15]OW[5] +;B[af]BL[15]OB[5] +;W[ag]WL[15]OW[5] +;B[ad]BL[15]OB[5] +;W[ns]WL[15]OW[5] +;B[nr]BL[15]OB[5] +;W[kr]WL[15]OW[5] +;B[ls]BL[15]OB[5] +;W[gq]WL[15]OW[5] +;B[fp]BL[15]OB[5] +;W[kb]WL[15]OW[5] +;B[id]BL[15]OB[5] +;W[fo]WL[15]OW[5] +;B[gs]BL[15]OB[5] +;W[hs]WL[15]OW[5] +;B[ds]BL[15]OB[5] +;W[bg]WL[15]OW[5] +;B[qb]BL[15]OB[5] +;W[qa]WL[15]OW[5] +;B[ra]BL[15]OB[5] +;W[pa]WL[15]OW[5] +;B[ne]BL[15]OB[5] +;W[nd]WL[15]OW[5] +;B[rh]BL[15]OB[5] +;W[nf]WL[15]OW[5] +;B[me]BL[15]OB[5] +;W[db]WL[15]OW[5] +;B[cb]BL[15]OB[5] +;W[da]WL[15]OW[5] +;B[fb]BL[15]OB[5] +;W[ar]WL[15]OW[5] +;B[gp]BL[15]OB[5] +;W[cs]WL[15]OW[5] +;B[bs]BL[15]OB[5] +;W[go]WL[15]OW[5] +;B[is]BL[15]OB[5] +;W[hr]WL[15]OW[5] +;B[ks]BL[15]OB[5] +;W[hp]WL[15]OW[5] +;B[ng]BL[15]OB[5] +;W[js]WL[15]OW[5] +;B[lq]BL[15]OB[5] +;W[mg]WL[15]OW[5] +;B[of]BL[15]OB[5] +;W[os]WL[15]OW[5] +;B[ms]BL[15]OB[5] +;W[mq]WL[15]OW[5] +;B[mr]BL[15]OB[5] +;W[os]WL[15]OW[5] +;B[ns]BL[15]OB[5] +;W[he]WL[15]OW[5] +;B[ie]BL[15]OB[5] +;W[kc]WL[15]OW[5] +;B[jd]BL[15]OB[5] +;W[nh]WL[15]OW[5] +;B[if]BL[15]OB[5] +;W[hf]WL[15]OW[5] +;B[jg]BL[15]OB[5] +;W[jf]WL[15]OW[5] +;B[hd]BL[15]OB[5] +;W[kg]WL[15]OW[5] +;B[ja]BL[15]OB[5] +;W[do]WL[15]OW[5] +;B[jr]BL[15]OB[5] +;W[sr]WL[15]OW[5] +;B[sh]BL[15]OB[5] +;W[sp]WL[15]OW[5] +;B[sn]BL[15]OB[5] +;W[mj]WL[15]OW[5] +;B[gf]BL[15]OB[5] +;W[lj]WL[15]OW[5] +;B[kk]BL[15]OB[5] +;W[ef]WL[15]OW[5] +;B[ka]BL[15]OB[5] +;W[la]WL[15]OW[5] +;B[lg]BL[15]OB[5] +;W[lf]WL[15]OW[5] +;B[jb]BL[15]OB[5] +;W[ab]WL[15]OW[5] +;B[aa]BL[15]OB[5] +;W[og]WL[15]OW[5] +;B[nf]BL[15]OB[5] +;W[lg]WL[15]OW[5] +;B[ma]BL[15]OB[5] +;W[na]WL[15]OW[5] +;B[lb]BL[15]OB[5] +;W[mb]WL[15]OW[5] +;B[la]BL[15]OB[5] +;W[ba]WL[15]OW[5] +;B[ca]BL[15]OB[5] +;W[nc]WL[15]OW[5] +;B[ej]BL[15]OB[5] +;W[ir]WL[15]OW[5] +;B[fg]BL[15]OB[5] +;W[eg]WL[15]OW[5] +;B[js]BL[15]OB[5] +;W[sq]WL[15]OW[5] +;B[pn]BL[15]OB[5] +;W[jg]WL[15]OW[5] +;B[po]BL[15]OB[5]C[replicator [3d\]: perhaps someone from Korea cannot read that and used automatch to set up a game +] +;W[jj]WL[15]OW[5] +;B[jl]BL[15]OB[5] +;W[rb]WL[15]OW[5] +;B[sb]BL[15]OB[5] +;W[je]WL[15]OW[5] +;B[oe]BL[15]OB[5] +;W[bj]WL[15]OW[5] +;B[pm]BL[15]OB[5] +;W[ij]WL[15]OW[5] +;B[er]BL[15]OB[5] +;W[aq]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[eo]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[bm]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[re]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[sc]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[sd]WL[15]OW[5] +;B[se]BL[15]OB[5] +;W[fa]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[sf]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[bh]WL[15]OW[5] +;B[]BL[15]OB[5]C[jlg [-\]: pachi will play till the end because of the seki. +] +;W[ha]WL[15]OW[5] +;B[]BL[15]OB[5]C[Learn [4d\]: 30k +] +;W[sc]WL[15]OW[5] +(;B[rf]BL[15]OB[5]C[BOThater36 [5d\]: if you can kill fill all the liberty of a group, that grup is alive +BOThater36 [5d\]: can not +replicator [3d\]: Yeah! +] +;W[ea]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[gb]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[hc]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[ok]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[oa]WL[15]OW[5] +;B[]BL[15]OB[5]C[BOThater36 [5d\]: a game of 350+ moves +jlg [-\]: pachi will pass once all eyes are reduced to one point only +] +;W[cf]WL[15]OW[5] +;B[]BL[15]OB[5]C[BOThater36 [5d\]: yes +] +;W[ce]WL[15]OW[5] +;B[]BL[15]OB[5]C[BOThater36 [5d\]: programmers know this, but 50% of Go players dont know +] +;W[ah]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[ss]WL[15]OW[5] +;B[]BL[15]OB[5]C[jlg [-\]: it is not easy to handle seki correctly in a program. We would do it if there was an easy solution +] +;W[rg]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[ia]WL[15]OW[5] +;B[ga]BL[15]OB[5]C[Learn [4d\]: thx god +] +;W[db]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[qi]WL[15]OW[5] +;B[]BL[15]OB[5]C[replicator [3d\]: Solution= In addition to marking dead stones- have a seki marking tool +Learn [4d\]: w need b3 +] +;W[si]WL[15]OW[5]C[BOThater36 [5d\]: In Yahoo go, in rder to finish a game, u need to make all territory to honeycumb +] +;B[]BL[15]OB[5] +;W[da]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[fa]WL[15]OW[5] +;B[]BL[15]OB[5]C[alpha080 [?\]: 应氏规则 +] +;W[ha]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[ai]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[ci]WL[15]OW[5]C[alpha080 [?\]: ying chang qi rules +] +;B[]BL[15]OB[5]C[replicator [3d\]: I think pachi only does this when it wants you to resign +Mateman [2k\]: lol +] +;W[bi]WL[15]OW[5] +;B[]BL[15]OB[5]C[Learn [4d\]: w need b3. thx +jlg [-\]: of course if pachi was losing it would have resigned already +] +;W[dg]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[cg]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[nj]WL[15]OW[5] +;B[]BL[15]OB[5] +;W[ni]WL[15]OW[5] +;B[]BL[15]OB[5]C[BOThater36 [5d\]: B must feel so happy that wite keep filling his own territory +] +;W[nb]WL[15]OW[5] +;B[]BL[15]OB[5]C[BOThater36 [5d\]: and end up he still lose +] +;W[ob]WL[15]OW[5] +;B[]BL[15]OB[5]C[jlg [-\]: koreans use chinese rules normally right ? +BOThater36 [5d\]: no, japanese +] +;W[am]WL[15]OW[5] +;B[]BL[15]OB[5]C[jlg [-\]: ah that may explain it +] +;W[fj]WL[15]OW[5] +;B[cl]BL[15]OB[5]C[BOThater36 [5d\]: lol +] +;W[cm]WL[15]OW[5] +;B[bl]BL[15]OB[5]C[BOThater36 [5d\]: so before you play bot, you need to know the bot (Chinese rule) :-) +] +;W[al]WL[15]OW[5] +;B[bk]BL[15]OB[5] +;W[oh]WL[15]OW[5] +;B[dn]BL[15]OB[5]C[CptObvious [5k?\]: jlg, when i say winrate to pachi, does it get my username? if yes, one could implement a queue command, for the next players +] +;W[ch]WL[15]OW[5] +;B[dm]BL[15]OB[5] +;W[ho]WL[15]OW[5] +;B[en]BL[15]OB[5]C[jlg [-\]: yes it gets your name +] +;W[dh]WL[15]OW[5] +;B[ck]BL[15]OB[5]C[jlg [-\]: but kgs decides who plays next, not pachi +] +;W[cn]WL[15]OW[5] +;B[en]BL[15]OB[5]C[BOThater36 [5d\]: I hate bots, but I dont hate bot rule. in fact I love bot Go rule +CptObvious [5k?\]: you can put it into the config, i think +] +;W[ak]WL[15]OW[5] +;B[em]BL[15]OB[5] +;W[cj]WL[15]OW[5]C[CptObvious [5k?\]: you would have to reconnect after every game +] +;B[cl]BL[15]OB[5]C[jlg [-\]: I would have to kill the kgs connection to reload the config +] +;W[gb]WL[15]OW[5] +;B[ck]BL[15]OB[5] +;W[ea]WL[15]OW[5] +;B[bk]BL[15]OB[5] +;W[ia]WL[15]OW[5] +;B[ga]BL[15]OB[5] +;W[ia]WL[15]OW[5] +;B[dm]BL[15]OB[5] +;W[db]WL[15]OW[5] +;B[ea]BL[15]OB[5] +;W[dn]WL[15]OW[5] +;B[em]BL[15]OB[5]C[Learn [4d\]: :) +] +;W[bl]WL[15]OW[5] +;B[ck]BL[15]OB[5] +;W[df]WL[15]OW[5] +;B[cl]BL[15]OB[5]C[Learn [4d\]: panchi2 must fill its terriyery +] +;W[bk]WL[15]OW[5] +;B[cl]BL[15]OB[5]C[BOThater36 [5d\]: eventually all has to pass +] +;W[ck]WL[15]OW[5] +;B[dm]BL[15]OB[5] +;W[en]WL[15]OW[5] +;B[em]BL[15]OB[5]C[replicator [3d\]: upto 435 moves now....going for the record +] +;W[mo]WL[15]OW[5] +;B[iq]BL[15]OB[5] +;W[jq]WL[15]OW[5] +;B[kq]BL[15]OB[5]C[jlg [-\]: Killing pachi because of incorrect handicap. +BOThater36 [5d\]: why pachi doing that? desperate or bug? +Mateman [2k\]: 0-5 +]) +(;B[]BL[15]OB[5]C[alpha080 [?\]: how to end the game with pachi? +] +;W[]WL[15]OW[5]TW[oa][ra][sa][nb][ob][qb][rb][sb][oc][qc][rc][rd][sd][ce][de][qe][se][cf][df][qf][rf][cg][dg][fg][qg][rg][sg][ah][ch][dh][mh][oh][qh][rh][sh][ai][bi][ci][ni][pi][qi][ri][si][aj][cj][nj][pj][qj][rj][sj][ak][bk][ck][ok][qk][rk][sk][al][bl][cl][rl][sl][am][cm][dm][em][sm][cn][dn][en][rn][sn][ho][mo][ro][so][rp][iq][as][bs][ss]TB[ba][da][ea][fa][ga][ha][ia][ab][db][gb][bc][hc][ic][fj][gj][ll][pr][es][os]C[Learn [4d\]: it will take seki stones after finished +pachi2 [4d\]: You and the engine seem to disagree about which stones are dead. To solve this problem, you can press "undo", play until all dead stones are removed from the board, then score again. +Learn [4d\]: ha ha +jlg [-\]: the game ends normally by resign or 2 passes. ony in case of seki pachi has a problem. +jlg [-\]: B will get tired of this before pachi +Learn [4d\]: :) +jlg [-\]: In case of seki you have to capture all dead stones +Learn [4d\]: panchi2 stop it +jlg [-\]: this is explained in pachi2 info +replicator [3d\]: play probably can't read the recommended solution +replicator [3d\]: player +Learn [4d\]: u canot take alive stones +CptObvious [5k?\]: would s14 solve the problem here? +ihatelag [3k\]: just play S14! +jlg [-\]: to solve the problem it is sufficient to capture all dead stones +alpha080 [?\]: ... +ihatelag [3k\]: why doesn't black just play s14 +jlg [-\]: again this is only needed in case of seki +justice [1k\]: hahaha.... +ihatelag [3k\]: its chiense rules +replicator [3d\]: you are assuming they understand english +alpha080 [?\]: chinese rules or japanese rules? +jlg [-\]: is there a korean reading this? please tell B to either capture the dead stones or resign. +jlg [-\]: this is chinese rules, capturing dead stones doesn't cost anything +Learn [4d\]: canot talk when playing +replicator [3d\]: all the bots play by chinese counting so their final moves inside their own territory do not lose points +replicator [3d\]: but I have seen many such moves before dame are filled so they lose points anyway +jlg [-\]: yes you must fill all dame before capturing the dead stones +BOThater36 [5d\]: welcme to the cyber world :-) +BOThater36 [5d\]: thats why Ing rule is perfect in cyber Go +Learn [4d\]: i knew b had a bad yose to creat such ......... +])) diff --git a/uct/uct.c b/uct/uct.c index 5bd7aa5..467081b 100644 --- a/uct/uct.c +++ b/uct/uct.c @@ -110,8 +110,14 @@ uct_pass_is_safe(struct uct *u, struct board *b, enum stone color, bool pass_all struct move_queue mq = { .moves = 0 }; dead_group_list(u, b, &mq); - if (pass_all_alive && mq.moves > 0) - return false; // We need to remove some dead groups first. + if (pass_all_alive) { + for (unsigned int i = 0; i < mq.moves; i++) { + if (board_at(b, mq.move[i]) == stone_other(color)) { + return false; // We need to remove opponent dead groups first. + } + } + mq.moves = 0; // our dead stones are alive when pass_all_alive is true + } return pass_is_safe(b, color, &mq); } -- 2.11.4.GIT