1

チェス盤がさまざまなビットボードに格納されている場合、最新のチェス エンジンは、特定のセルにどのタイプ/サイド ピースが配置されているかをどのように認識しますか? 特定のビットがどのタイプ/サイドピースであるかを調べるには、常に次のことを行う必要があるため、これに問題があります。

if((bit_check & occupied) == 0ULL) ... // empty
else if((bit_check & white) != 0ULL) // white
    if((bit_check & white_pawns) != 0ULL) ... // white pawns
    else if((bit_check & white_rooks) != 0ULL) ... // white rooks
    ....
    else if((bit_check & white_kings) != 0ULL) ... // white kings
else if((bit_check & black) != 0ULL) // black
    if((bit_check & black_pawns) != 0ULL) ... // black pawns
    ....
    else if((bit_check) & black_kings) != 0ULL) ... // black kings

これは非常に面倒なプロセスであり、かなりの回数実行する必要があります (たとえば、何がキャプチャされているかを確認するための移動の生成中)。これをそのまま使用する必要があるのか​​ 、それともPiece[64]ピース型を本質的に格納する type の 64 配列を作成する方が速いのかはわかりません。

検索機能でキャプチャ分析を行うには、何百万回も実行する必要があることを考えると、どちらが良いでしょう。私はこれを間違っていますか?

4

2 に答える 2