グラフ囲碁
碁盤の目の代わりに、任意のグラフの上で打つ囲碁です。点が交点、辺が隣接。 石のつながり・呼吸点・取り・コウ・自殺手禁止は普通の囲碁と同じです。
wasm を読み込み中…
- 手番
- 黒
- アゲハマ 黒 / 白
- 0 / 0
- 手数
- 0
しくみ
どちらも wasm/ の Rust を wasm32 にビルドしたもので、JSON を受け取って JSON を返します (web/client/lib/graph_go/ が読み込みと接続を担当)。
- エンジン (
engine.wasm)play— 現在の盤面に次の 1 手を置いたとき何が起きるか (合法か、取られる石、コウ、アタリ、次の盤面)regions— 空点が n 個以上つながった部分を、周りの石ごと部分グラフとして取り出すevaluate— 部分グラフをそれぞれ CPU モジュールのjudgeに投げ、黒白どちらの地かを判定させて数える (n 未満の領域はエンジンが「片方の色だけに囲まれていればその色」で決める)
- CPU (
cpu.wasm)judge— 部分グラフの空点ごとに近い方の色を数え、6 割以上を占めた色の地とするgenmove— 原始モンテカルロ。候補手ごとにランダムな終局まで打ち切り、勝率の最も高い手を選ぶ
エンジンは cpu.judge を import していて、ページがそれを CPU モジュールの export につなぎます。数え方は中国ルール (石 + 地、白にコミ)。