【高速化】ビット演算 0x02at TECH
【高速化】ビット演算 0x02 - 暇つぶし2ch28:デフォルトの名無しさん
06/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);

この処理をビット演算を使って、華麗に高速に行う方法はないのでしょうか?


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch