8月30日
枝刈りを追加した。
追加前よりなぜか遅くなった。
symmetryOpsのロジックを変えると速くなるだろうか。
枝刈りを追加することによって回転対称チェック、ミラー判定を減らせるはずなのでsymmetryOpsを軽くできるはず。
枝刈り追加前
15: 2279184 285095 2.43
16: 14772512 1847425 12.01
17: 95815104 11979381 1:12.26
枝刈り追加後
15: 2279184 285095 2.18
16: 14772512 1847425 12.55
17: 95815104 11979381 1:20.44
1行目角にクイーンがある場合はミラー判定だけ必要
ミラー判定についても、主対角線鏡像のみを判定すればよい
if(row<BOUND1) {
bitmap&=~2; // bm|=2; bm^=2; (bm&=~2と同等)
}
1行目角にクイーンが無い場合、クイーン位置より右位置の8対称位置にクイーンを置くことはできない
//【枝刈り】上部サイド枝刈り
if(row<BOUND1){
bitmap&=~SIDEMASK;
//【枝刈り】下部サイド枝刈り
}else if(row==BOUND2) {
if((down&SIDEMASK)==0){ return; }
if((down&SIDEMASK)!=SIDEMASK){ bitmap&=SIDEMASK; }
//【枝刈り】最下段枝刈り
}else if(row == size-1){
bitmap&=~LASTMASK;
}