このプロジェクトについて
このリポジトリは、一般的なチェスユーティリティをパッケージ群として提供するGo(Golang)チェスライブラリです。notnil/chessのフォークであり、/v2名前空間で保守され、アロケーションの削減、性能向上、テストカバレッジの拡充に重点を置いています。
中核機能には、ビットボードを用いた指し手生成、手番管理、チェックメイトと引き分けの検出、シリアライズ/デシリアライズが含まれます。対応フォーマットにはPGN(タグペア、コメント、コマンド注釈、大規模データベース向けのストリーミングScannerを含み、任意でバリエーションを展開可能)とFENがあります。複数の表記法に対応しています:Algebraic、Long Algebraic、UCIです。
対局結果の処理は、チェックメイト、ステイルメイト、投了、引き分け提案、三回反復と五回反復、50手ルールと75手ルール、不十分な駒を対象とします。指し手APIには検証付きと検証を省略した高性能版(UnsafeMove、UnsafePushNotationMove)があり、READMEでは検証を省略した場合にそれぞれ約1.5倍と約1.1倍の高速化が得られると述べられています。
追加パッケージには、SVGチェス盤画像ジェネレーター、定跡エクスプローラー、Stockfishなどの外部エンジンを操作できるUniversal Chess Interface(UCI)クライアントが含まれ、セルフプレイの例で示されています。Draw()メソッドはUnicodeのチェス記号で局面を描画します。
インストールはgo get github.com/corentings/chess/v2で行います。READMEにはベンチマークが記載され、このライブラリはチェスボットでの利用可能性を想定して性能を調整したと述べています。主に作者自身のプロジェクトのために保守され、コミュニティと共有されています。コントリビューション、issue、プルリクエストを歓迎します。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.