本文へ移動

Narabe並べ

48種類の盤上ゲームを、新しい局面を返す手の操作、合法手の一覧、再生できる棋譜で扱えます。

「並べ」は五目並べの「並べ」。石を並べることを表す言葉です。 名前について(英語)

目次

解説

対局の長さと引き分け

盤の大きさが対局の上限を決めない理由、引き分けの方針の選び方、シミュレーションの回数の上限を説明します。

盤の大きさだけでは上限が決まらない

置くだけのゲームでは使えるマス数が手数の上限です。取りで空きが戻り、行消去で行が消え、移動する駒は同じ局面へ戻れます。longestPossibleGameがnullなら、盤による上限を保証できません。すべての対局が永久に続くという意味ではありません。

import {createGame,longestPossibleGame,noBoundReason} from "@johnmorrisdotca/narabe";
for (const variant of ["freestyle","go","checkers"] as const) {
  const game = createGame({variant});
  console.log(variant,longestPossibleGame(game.settings),noBoundReason(game.settings));
}
freestyle 225 null
go null captures
checkers null pieces-move

方針を明示する

DrawLimitは、対応するルールでnone、half、threeQuartersを選びます。計算を重複させず、movesBeforeDrawを使います。Hexは接続のルールで引き分けにならないため、同じ方針を全ゲームに適用しません。ドラフツには各CheckersRulesの駒数、終盤、反復のルールもあります。

ホストの試行回数を決める

seededRandomで再現できても、必ず終了するとは限りません。シミュレーション側で有限の処理回数を決め、途中なら途中と報告します。longestPossibleGameとnoBoundReasonは、観測した長さとは別に保証を説明します。READMEの説明も残っています。

ソースを見るGitHub で編集@johnmorrisdotca/narabe 1.3.0 のソースから作成しました。

この日本語は、まだ日本語を母語とする方の確認を受けていません。訂正を歓迎します。