チェスとチェッカーから得た非常に効果的な表現であるbitboardsを使用します。概念はビットでピースを表現することであり、プレーヤーのピースのセットはビットのフィールドで表現できます。少なくとも 49 ビットが必要なので、64 ビットの整数が適切に機能します。
これは非常にメモリと計算効率の高い表現であり、他の表現よりも表現力があります。ビット演算を使用して、単一のピースとセット全体の両方を一度に簡単に操作できます。提案されているような配列ベースの表現では、ビットボード ( 、、、、など)byte[][]を使用して単一の演算子で表すことができる操作に対して、あまりにも多くのループを実行する必要があります。&|^<<>>>
セットされたビットはプレイヤーの駒を与えます。たとえば、これは 1 人のプレーヤーのビットボードかもしれません。他のプレイヤーのために別のビットボードが必要になります。
0000000000000000000000000000000010000000001000000
10 進数では、これは になりますlong bitboard = 65600;。いくつかの新しい行を挿入すると、次のようになります。
0000000
0000000
0000000
0000000
0000100
0000000
1000000
これを効率的に処理するために、いくつかのテーブルを事前計算できます。したがって、32 番目のビット/正方形の中央にあるピースについては、次のようsurroundingに使用すると次の表がsurrounding[square]得られる可能性があります。
0000000
0000000
0000000
0001110
0001010
0001110
0000000
&次に、ビットごとの演算子を使用して、これと相手のビットボードとの交点を見つけるか、 との結合|、または との差^などを取得<< 7できます。多くの表現力があり、これらの操作のほとんどは1 クロック サイクルしかかからないため、非常に効率的でもあります。