NQueen日記 2022/08/09

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桁の数字に直して比較しようと思う。
将来的にはビット計算で計算を効率化したい。

書籍の紹介

NQueen日記 2022/08/10

NQueen日記 2022/08/10

NQueen日記 2022/08/08

NQueen日記 2022/08/08