- 28 名前:デフォルトの名無しさん [2006/09/27(水) 22:52:33 ]
- ビットボードによるオセロの話
A1, B1, ... H1 などの横一列の状態を一意の数字(インデックス)に変換し、 あらかじめ作成しておいたテーブルを引きたい マスの状態は白黒空の3種類なので、空:0,黒:1,白2として 3倍しながら値を足していけば インデックスを計算できる。 #define isB(p) ((black&p)!=0) #define isW(p) ((white&p)!=0) #define V(p) (isB(p) ? 1 : isW(p) ? 2 : 0) #define INDEX8(p1, p2, p3, p4, p5, p6, p7, p8)\ (((((((V(p1)*3+V(p2))*3+V(p3))*3+V(p4))*3+V(p5))*3+V(p6))*3+V(p7))*3+V(p8)) INDEX8(A1, B1, C1, D1, E1, F1, G1, H1); この処理をビット演算を使って、華麗に高速に行う方法はないのでしょうか?
|

|