ビットボードをチェスエンジンに実装する正しい方法は何だろうと思っています。これまでのところ、チェス エンジン プログラミングの基礎について調査し、ノートを取りました。主に、ミニマックス、アルファベット、静止検索、高度な評価関数などです。
次に、プロジェクトを次の 3 つの部分に分割します。
- GUI
- 取締役会の代表
- ミニマックスを超える検索を実装し、静的位置の適切な評価関数に到達する
ボードを表すときとゲームツリーを計算するときの両方の時間を節約するために、ビットボードを使用してボードの状態を表しています。ここに私の問題があります。
誰かのコードをコピーするだけでは嫌だったので、試しに を作成しようとしましたunsigned long
が、明らかに 1 ビットが失われていました。
コードは次のとおりです。
public static void main(String[] args) {
Long bitBoard = Long.parseUnsignedLong("9223372036854775807");
System.out.println("Number of bits in this 64-bit unsigned long: " + Long.bitCount(bitBoard));
System.out.println(Long.MAX_VALUE);
}
誰かが私が何を間違えたのか、そしてなぜ私が少し負けているのかについてのヒントを教えてもらえますか?