###前提・実現したいこと
5×5の将棋プログラムでbitboardの実装をしようとしているのですが、イマイチ速くなるように書けません。というのも、例えば銀を動かす手を調べるとして、自分の駒のbitboardとその地点の銀の動きの&を取れば動かせる場所を1で示せますが、それをどうやって取り出せば高速になるのかわかりません。
###該当のソースコード
C++
1//銀が33にいて、自分の駒が22と42にいる場合 2int enemyboard=65600,ginmove=330048; 3int move = enemyboard ^ ginmove;
###試したこと
ー銀ー ー自駒ー ー動きー
00000 00000 00000
01110 01010 00100
00000 00000 00000
01010 00000 01010
00000 00000 00000
動きのbitは得られますが実際に手にするのにfor文を回すと計算量が増え、bitを使う意味がない。33に居る時の銀の動きを予め配列にしておけば計算量は少ししか変わらないですよね?
実際にfor文で確かめるしか無いのでしょうか?
###補足情報(言語/FW/ツール等のバージョンなど)
windows VisualStudio2015
C++14
回答3件
あなたの回答
tips
プレビュー