Skip to main content

Crate rsshogi

Crate rsshogi 

Source
Expand description

§rsshogi

rsshogi は、将棋局面の操作、合法手生成、一手詰め判定、棋譜や定跡の入出力に使う Rust ライブラリです。

use rsshogi::board;

let position = board::position_from_sfen(
    "lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1",
)?;
println!("{}", position.to_sfen(None));

§API と機能

常時利用できるモジュールは boardmatetypes と、クレートルートに再エクスポートされた movegen です。 棋譜、定跡、policy ラベル、局面の直列化、SVG、検証、駒落ちなどの初期局面は、対応する Cargo feature で有効化します。

Position は局面状態を表します。 SFEN の解析は失敗し得るため、戻り値の Result を処理してください。 to_sfen は現在の局面を SFEN へ整形します。

不成を含むすべての合法手を生成するには LegalAll を使います。 Legal は探索向けに一部の不成を省きます。 王手回避や駒取りなど、用途別の生成モードもあり、各モードの合法性検査の範囲は異なります。 生成順は API の保証に含まれません。 MoveListMove32List は、手生成に使う固定容量のコンテナで、ヒープ領域を確保しません。

Move は 16 ビットの指し手、Move32 は移動後の駒情報を加えた 32 ビットの指し手です。 Ki2Notation は 1 手分の KI2 記法をヒープ確保なしで生成し、比較、ハッシュ、文字列変換、局面上の合法手への解決に使えます。

基本型の文書化された raw 値は、外部データとの互換性を保つための契約です。 外部入力には入力検証を行うコンストラクタを使い、検証なしで作った値をそのまま盤面アクセスに渡さないでください。 Square の添字は file_index * 9 + rank_index で、筋と段の index はともに 0 起点です。 USI 表記では筋を 1 から 9、段を a から i で表します。

solve_mate_in_one は、合法で王手を与え、相手に合法応手がない場合だけ Move32 を返し、それ以外では None を返します。 複数の詰みがある場合、任意の有効な手が返され得ます。 変更可能な探索局面を保持している場合は、solve_mate_in_one_in_place で局面の複製を避けられます。 この API は正常終了時に局面を復元します。 呼び出し前には、状態スタックを現局面と同期させておく必要があります。

HCP、PackedSfen、PACK、HCPE、YBB、SBK、Zobrist key は文書化されたワイヤ表現を使用します。 PACK の指し手は AperyMove のビット配置を使うため、通常の Move の raw 値と受け渡す際は明示的に変換してください。

各 API とデータ形式の詳細は rsshogi マニュアル を参照してください。

§ライセンス

MIT。

Re-exports§

pub use board::movegen;

Modules§

board
盤面表現と状態管理
mate
一手詰め判定。
types
将棋の基本型定義