bitboardに移行中(もうへろへろ)

選手権まであと約1ヶ月ですが、いまさらbitboardに移行中です(#゚Д゚)
勘違いしていたのが、
rotate bitboardってのは、あの複雑な表を使って、その場で回転をさせてるんだと思ってました。
なんのことはない。
斜め45度のビットボードも持っていて、移動する時に通常のビットボードといっしょに更新するんですね( ´Д`)
そんな事実は当たり前なのか、特に言及してる人もいなくて、
GPW2006のライエル先生の英文の論文を読んでやっと解りました……_| ̄|○


Craftyのソースも見まくりです。CrafyってFutilityCutをしてないですね。なんでやらないんですかね?
Fruitに負けるのはそのせいじゃないですかね?


というわけで、飛、香はRankAttack、FileAttackを計算できるようになったので、
後は角の45度のDiaAttackが求まれば一応、手生成とかできるようになります。


盤のある行の状態が、1100x1010の時に、実際に動ける利きは、0111x1000で、
それをすべて表でもっておけば、1100x1010の時に、駒で遮られて進めない位置の利きを消した「0111x1000」が
すぐに求められるわけですが、
これも作るのはなかなか手こずりました。
さらに両端は駒がいてもいなくても、利きの状態には影響を与えないため、
「-111x100-」(端はDontCare)となり、
RankAttack[81][512]いりそうなところを、
RankAttack[81][128]で済むと。このへんはYSSの掲示板での保木さんの指摘も読んだりして参考にしてます。
Craftyがそういうやり方を使ってるようですね。


あと、最近のyss掲示板に真似氏真似蔵さんが、45度のビットボードは64bitに収まるってアイデアを紹介されてました。
将棋も64bitにbitboardが収まればいいな〜と思います。
bitboardが32bit x 3に分かれてるので、ほんと面倒だし、速度も遅そうだし。
かといって64bit x 2 も無駄ですよねえ。128bitCPUが出るまで難しいですねえ(^^;


BITBOARDというclassを作りましたが、&とか|を演算子オーバーロードをすれば、コードが書きやすいかもしれません(遅くなる?)
yss掲示板の過去ログを読む限り磯部さんが過去にやられてるようですね。