8月9日
抽出した新ロジックだけのルートの中から、クイーン数に影響のあるもの、
symmetryOpsのあとで、NQueenをして最終行に到達するものを探したところ
以下の1個が最終行に到達するものだった。
t0:2,t1:5,l0:4,l1:6,b0:4,b1:1,r0:2,r1:5
<>N=8 STEP:251-7063 row:8 bit:0
7 6 5 4 3 2 1 0
=============================
0| 00000100
1| 00100000
2| 00000010
3| 00000000
4| 10000000
5| 00000001
6| 01000000
7| 00001000
反時計回りに90度回転させると以下のようになる
t0:2,t1:5,l0:2,l1:5,b0:4,b1:6,r0:4,r1:1
7 6 5 4 3 2 1 0
=============================
0| 00000100
1| 00100000
2| 10000000
3| 00000001
4| 00000000
5| 01000000
6| 00000010
7| 00001000
ログを見てみるとやはり存在した。
最小値判定が甘かったみたい。
最小値判定の見直しが必要。
現在は、上2行t0,t1と左、下、右、ミラー上、ミラー左、ミラー下、ミラー右を判定している
t0 2 t 5 < l0 4 l1 6
t0 2 t 5 < b0 4 b1 1
.
.
.
これだと今回のように上2行と右2行の値が同じ時にうまくいかなくなる
t0:2,t1:5 = r0:2,r1:5
t0:2,t1:5,l0:4,l1:6,b0:4,b1:1,r0:2,r1:5 > t0:2,t1:5,l0:2,l1:5,b0:4,b1:6,r0:4,r1:1
のように全体の比較が必要でロジックを見直す必要がある。
まずは 25464125 > 25254641のように8桁の数字に直して比較しようと思う。
将来的にはビット計算で計算を効率化したい。