もし、あなたが幸運であれば、あなたはバックトラック無しで、解答へ到達することができるかもしれません。これは、あなたが可能な動きが1つしかない空白の場所を多く見つけることができる場合に、特に真実です。
以下のリストでは、左側のテーブルは、現在の数字の配置を示しており、ドットが埋めるべき場所です。そして、右側のテーブルは、可能な動きの数を示しています。もし、あなたがeval=1である場所を見つければ、あなたはまずそのような場所を埋めるべきです。
nplaces = 52
index=0, Position(row: 1, col: 7), eval=1
----------------- -----------------
7 . 3 . . . . . . . 4 . 4 4 5 3 3 4
. 5 1 3 7 . 4 . . 3 . . . . 4 . 1 3
6 . . . 1 . . 2 . . 3 2 4 . 3 3 . 5
. . 4 6 . . . . . 4 6 . . 2 3 4 4 4
. . . . . 7 . 8 . 3 5 3 3 2 . 4 . 5
5 . . 2 3 1 9 . . . 3 2 . . . . 2 3
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 4
. . 7 . 9 . 2 . . 3 4 . 3 . 4 . 3 3
----------------- -----------------
index=1, Position(row: 5, col: 7), eval=1
----------------- -----------------
7 . 3 . . . . . . . 4 . 4 4 5 2 2 3
. 5 1 3 7 . 4 6 . 3 . . . . 3 . . 2
6 . . . 1 . . 2 . . 3 2 4 . 3 3 . 5
. . 4 6 . . . . . 4 6 . . 2 3 4 4 4
. . . . . 7 . 8 . 3 5 3 3 2 . 4 . 5
5 . . 2 3 1 9 . . . 3 2 . . . . 1 3
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 4
. . 7 . 9 . 2 . . 3 4 . 3 . 4 . 2 3
----------------- -----------------
index=2, Position(row: 0, col: 6), eval=2
----------------- -----------------
7 . 3 . . . . . . . 4 . 4 4 5 2 2 3
. 5 1 3 7 . 4 6 . 3 . . . . 3 . . 2
6 . . . 1 . . 2 . . 3 2 4 . 3 3 . 5
. . 4 6 . . . . . 4 6 . . 2 3 3 3 3
. . . . . 7 . 8 . 3 5 3 3 2 . 4 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 4
. . 7 . 9 . 2 . . 3 4 . 3 . 4 . 2 3
----------------- -----------------
index=3, Position(row: 0, col: 7), eval=1
----------------- -----------------
7 . 3 . . . 1 . . . 4 . 4 4 5 . 1 3
. 5 1 3 7 . 4 6 . 3 . . . . 3 . . 2
6 . . . 1 . . 2 . . 3 2 4 . 3 3 . 5
. . 4 6 . . . . . 4 6 . . 2 3 2 3 3
. . . . . 7 . 8 . 3 5 3 3 2 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 4
. . 7 . 9 . 2 . . 3 4 . 3 . 4 . 2 3
----------------- -----------------
index=4, Position(row: 8, col: 7), eval=1
----------------- -----------------
7 . 3 . . . 1 5 . . 4 . 3 3 4 . . 2
. 5 1 3 7 . 4 6 . 3 . . . . 3 . . 2
6 . . . 1 . . 2 . . 3 2 4 . 3 2 . 4
. . 4 6 . . . . . 4 6 . . 2 3 2 2 3
. . . . . 7 . 8 . 3 5 3 3 2 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 4
. . 7 . 9 . 2 . . 3 4 . 3 . 4 . 1 3
----------------- -----------------
index=5, Position(row: 3, col: 7), eval=1
----------------- -----------------
7 . 3 . . . 1 5 . . 4 . 3 3 4 . . 2
. 5 1 3 7 . 4 6 . 3 . . . . 3 . . 2
6 . . . 1 . . 2 . . 3 2 4 . 3 2 . 4
. . 4 6 . . . . . 4 6 . . 2 3 2 1 3
. . . . . 7 . 8 . 3 5 3 3 2 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 3
. . 7 . 9 . 2 3 . 3 4 . 3 . 3 . . 2
----------------- -----------------
index=6, Position(row: 0, col: 8), eval=2
----------------- -----------------
7 . 3 . . . 1 5 . . 4 . 3 3 4 . . 2
. 5 1 3 7 . 4 6 . 3 . . . . 3 . . 2
6 . . . 1 . . 2 . . 3 2 4 . 3 2 . 4
. . 4 6 . . . 1 . 3 5 . . 2 3 2 . 3
. . . . . 7 . 8 . 3 5 3 3 2 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 3
. . 7 . 9 . 2 3 . 3 4 . 3 . 3 . . 2
----------------- -----------------
index=7, Position(row: 1, col: 8), eval=1
----------------- -----------------
7 . 3 . . . 1 5 8 . 3 . 2 2 3 . . .
. 5 1 3 7 . 4 6 . 3 . . . . 3 . . 1
6 . . . 1 . . 2 . . 3 2 4 . 3 2 . 3
. . 4 6 . . . 1 . 3 5 . . 2 3 2 . 3
. . . . . 7 . 8 . 3 5 3 3 2 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 3
. . 7 . 9 . 2 3 . 3 4 . 3 . 3 . . 2
----------------- -----------------
index=8, Position(row: 0, col: 3), eval=2
----------------- -----------------
7 . 3 . . . 1 5 8 . 3 . 2 2 3 . . .
. 5 1 3 7 . 4 6 9 2 . . . . 2 . . .
6 . . . 1 . . 2 . . 3 2 4 . 3 2 . 2
. . 4 6 . . . 1 . 3 5 . . 2 3 2 . 3
. . . . . 7 . 8 . 3 5 3 3 2 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 3
. . 7 . 9 . 2 3 . 3 4 . 3 . 3 . . 2
----------------- -----------------
index=9, Position(row: 0, col: 4), eval=1
----------------- -----------------
7 . 3 4 . . 1 5 8 . 2 . . 1 3 . . .
. 5 1 3 7 . 4 6 9 2 . . . . 2 . . .
6 . . . 1 . . 2 . . 3 2 3 . 3 2 . 2
. . 4 6 . . . 1 . 3 5 . . 2 3 2 . 3
. . . . . 7 . 8 . 3 5 3 2 2 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 2 3 . . 3
. . 7 . 9 . 2 3 . 3 4 . 3 . 3 . . 2
----------------- -----------------
index=10, Position(row: 7, col: 4), eval=1
----------------- -----------------
7 . 3 4 6 . 1 5 8 . 2 . . . 2 . . .
. 5 1 3 7 . 4 6 9 2 . . . . 2 . . .
6 . . . 1 . . 2 . . 3 2 3 . 3 2 . 2
. . 4 6 . . . 1 . 3 5 . . 2 3 2 . 3
. . . . . 7 . 8 . 3 5 3 2 2 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 3 . . 3 . .
. . . . . . 8 4 . 3 4 4 3 1 3 . . 3
. . 7 . 9 . 2 3 . 3 4 . 3 . 3 . . 2
----------------- -----------------
index=11, Position(row: 3, col: 4), eval=1
----------------- -----------------
7 . 3 4 6 . 1 5 8 . 2 . . . 2 . . .
. 5 1 3 7 . 4 6 9 2 . . . . 2 . . .
6 . . . 1 . . 2 . . 3 2 3 . 3 2 . 2
. . 4 6 . . . 1 . 3 5 . . 1 3 2 . 3
. . . . . 7 . 8 . 3 5 3 2 1 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 4 3 2 . 2 . . 2
. . 7 . 9 . 2 3 . 3 4 . 2 . 2 . . 2
----------------- -----------------
index=12, Position(row: 4, col: 4), eval=1
----------------- -----------------
7 . 3 4 6 . 1 5 8 . 2 . . . 2 . . .
. 5 1 3 7 . 4 6 9 2 . . . . 2 . . .
6 . . . 1 . . 2 . . 3 2 3 . 3 2 . 2
. . 4 6 8 . . 1 . 2 4 . . . 2 2 . 3
. . . . . 7 . 8 . 3 5 3 2 1 . 3 . 5
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 4 3 2 . 2 . . 2
. . 7 . 9 . 2 3 . 3 4 . 2 . 2 . . 2
----------------- -----------------
index=13, Position(row: 0, col: 1), eval=2
----------------- -----------------
7 . 3 4 6 . 1 5 8 . 2 . . . 2 . . .
. 5 1 3 7 . 4 6 9 2 . . . . 2 . . .
6 . . . 1 . . 2 . . 3 2 3 . 3 2 . 2
. . 4 6 8 . . 1 . 2 4 . . . 2 2 . 3
. . . . 4 7 . 8 . 3 5 3 2 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 4 3 2 . 2 . . 2
. . 7 . 9 . 2 3 . 3 4 . 2 . 2 . . 2
----------------- -----------------
index=14, Position(row: 0, col: 5), eval=1
----------------- -----------------
7 2 3 4 6 . 1 5 8 . . . . . 1 . . .
. 5 1 3 7 . 4 6 9 1 . . . . 2 . . .
6 . . . 1 . . 2 . . 3 2 3 . 3 2 . 2
. . 4 6 8 . . 1 . 2 3 . . . 2 2 . 3
. . . . 4 7 . 8 . 3 4 3 2 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 3 2 . 2 . . 2
. . 7 . 9 . 2 3 . 3 4 . 2 . 2 . . 2
----------------- -----------------
index=15, Position(row: 1, col: 0), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
. 5 1 3 7 . 4 6 9 1 . . . . 2 . . .
6 . . . 1 . . 2 . . 3 2 2 . 2 2 . 2
. . 4 6 8 . . 1 . 2 3 . . . 1 2 . 3
. . . . 4 7 . 8 . 3 4 3 2 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 3 2 . 2 . . 2
. . 7 . 9 . 2 3 . 3 4 . 2 . 2 . . 2
----------------- -----------------
index=16, Position(row: 1, col: 5), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 . 4 6 9 . . . . . 1 . . .
6 . . . 1 . . 2 . . 2 1 2 . 2 2 . 2
. . 4 6 8 . . 1 . 2 3 . . . 1 2 . 3
. . . . 4 7 . 8 . 3 4 3 2 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 3 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 4 . 2 . 2 . . 2
----------------- -----------------
index=17, Position(row: 2, col: 2), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 . . . 1 . . 2 . . 2 1 2 . 2 2 . 2
. . 4 6 8 . . 1 . 2 3 . . . 1 2 . 3
. . . . 4 7 . 8 . 3 4 3 2 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 3 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 4 . 2 . 2 . . 2
----------------- -----------------
index=18, Position(row: 2, col: 1), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 . 9 . 1 . . 2 . . 1 . 2 . 2 2 . 2
. . 4 6 8 . . 1 . 2 3 . . . 1 2 . 3
. . . . 4 7 . 8 . 3 4 2 2 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 4 . 2 . 2 . . 2
----------------- -----------------
index=19, Position(row: 3, col: 5), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 . 1 . . 2 . . . . 2 . 2 2 . 2
. . 4 6 8 . . 1 . 2 3 . . . 1 2 . 3
. . . . 4 7 . 8 . 3 4 2 2 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 2 . . 2
----------------- -----------------
index=20, Position(row: 2, col: 5), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 . 1 . . 2 . . . . 2 . 1 2 . 2
. . 4 6 8 5 . 1 . 2 3 . . . . 1 . 2
. . . . 4 7 . 8 . 3 4 2 1 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 2 . . 2
----------------- -----------------
index=21, Position(row: 2, col: 3), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 . 1 8 . 2 . . . . 1 . . 2 . 2
. . 4 6 8 5 . 1 . 2 3 . . . . 1 . 2
. . . . 4 7 . 8 . 3 4 2 1 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 1 . . 2
----------------- -----------------
index=22, Position(row: 3, col: 6), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 . 2 . . . . . . . 2 . 2
. . 4 6 8 5 . 1 . 2 3 . . . . 1 . 2
. . . . 4 7 . 8 . 3 4 2 1 . . 3 . 4
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 1 . . 2
----------------- -----------------
index=23, Position(row: 2, col: 6), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 . 2 . . . . . . . 1 . 2
. . 4 6 8 5 3 1 . 2 2 . . . . . . 1
. . . . 4 7 . 8 . 3 4 2 1 . . 2 . 3
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 3 . .
. . . . 5 . 8 4 . 3 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 1 . . 2
----------------- -----------------
index=24, Position(row: 2, col: 8), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 . . . . . . . . . 1
. . 4 6 8 5 3 1 . 2 2 . . . . . . 1
. . . . 4 7 . 8 . 3 4 2 1 . . 2 . 3
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 2 . .
. . . . 5 . 8 4 . 3 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 1 . . 2
----------------- -----------------
index=25, Position(row: 3, col: 8), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
. . 4 6 8 5 3 1 . 2 2 . . . . . . 1
. . . . 4 7 . 8 . 3 4 2 1 . . 2 . 3
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 2 . .
. . . . 5 . 8 4 . 3 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 1 . . 2
----------------- -----------------
index=26, Position(row: 3, col: 0), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
. . 4 6 8 5 3 1 2 1 2 . . . . . . .
. . . . 4 7 . 8 . 3 4 2 1 . . 2 . 2
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 2 . .
. . . . 5 . 8 4 . 3 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 1 . . 2
----------------- -----------------
index=27, Position(row: 3, col: 1), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 . 4 6 8 5 3 1 2 . 1 . . . . . . .
. . . . 4 7 . 8 . 2 3 2 1 . . 2 . 2
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 2 . .
. . . . 5 . 8 4 . 2 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 1 . . 2
----------------- -----------------
index=28, Position(row: 4, col: 3), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
. . . . 4 7 . 8 . 2 3 2 1 . . 2 . 2
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 2 . .
. . . . 5 . 8 4 . 2 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 1 . . 2
----------------- -----------------
index=29, Position(row: 8, col: 5), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
. . . 9 4 7 . 8 . 2 3 2 . . . 2 . 2
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 2 . .
. . . . 5 . 8 4 . 2 3 2 2 . 2 . . 2
. . 7 . 9 . 2 3 . 2 3 . 2 . 1 . . 2
----------------- -----------------
index=30, Position(row: 7, col: 5), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
. . . 9 4 7 . 8 . 2 3 2 . . . 2 . 2
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 2 . .
. . . . 5 . 8 4 . 2 3 2 2 . 1 . . 2
. . 7 . 9 6 2 3 . 2 2 . 2 . . . . 1
----------------- -----------------
index=31, Position(row: 8, col: 8), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
. . . 9 4 7 . 8 . 2 3 2 . . . 2 . 2
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 2 . .
. . . . 5 3 8 4 . 2 3 2 2 . . . . 2
. . 7 . 9 6 2 3 . 2 2 . 2 . . . . 1
----------------- -----------------
index=32, Position(row: 4, col: 8), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
. . . 9 4 7 . 8 . 2 3 2 . . . 2 . 1
5 . . 2 3 1 9 7 . . 2 2 . . . . . 2
3 . . . 2 4 . 9 1 . 2 3 2 . . 1 . .
. . . . 5 3 8 4 . 2 3 2 2 . . . . 2
. . 7 . 9 6 2 3 5 2 2 . 2 . . . . .
----------------- -----------------
index=33, Position(row: 4, col: 2), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
. . . 9 4 7 . 8 6 2 2 1 . . . 1 . .
5 . . 2 3 1 9 7 . . 2 2 . . . . . 1
3 . . . 2 4 . 9 1 . 2 3 2 . . 1 . .
. . . . 5 3 8 4 . 2 3 2 2 . . . . 1
. . 7 . 9 6 2 3 5 2 2 . 2 . . . . .
----------------- -----------------
index=34, Position(row: 4, col: 0), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
. . 2 9 4 7 . 8 6 1 2 . . . . 1 . .
5 . . 2 3 1 9 7 . . 2 2 . . . . . 1
3 . . . 2 4 . 9 1 . 2 3 2 . . 1 . .
. . . . 5 3 8 4 . 2 3 1 2 . . . . 1
. . 7 . 9 6 2 3 5 2 2 . 2 . . . . .
----------------- -----------------
index=35, Position(row: 4, col: 1), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 . 2 9 4 7 . 8 6 . 1 . . . . 1 . .
5 . . 2 3 1 9 7 . . 2 2 . . . . . 1
3 . . . 2 4 . 9 1 . 2 3 2 . . 1 . .
. . . . 5 3 8 4 . 1 3 1 2 . . . . 1
. . 7 . 9 6 2 3 5 1 2 . 2 . . . . .
----------------- -----------------
index=36, Position(row: 4, col: 6), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 . 8 6 . . . . . . 1 . .
5 . . 2 3 1 9 7 . . 2 2 . . . . . 1
3 . . . 2 4 . 9 1 . 2 3 2 . . 1 . .
. . . . 5 3 8 4 . 1 3 1 2 . . . . 1
. . 7 . 9 6 2 3 5 1 2 . 2 . . . . .
----------------- -----------------
index=37, Position(row: 5, col: 8), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 . . 2 3 1 9 7 . . 2 2 . . . . . 1
3 . . . 2 4 . 9 1 . 2 3 2 . . 1 . .
. . . . 5 3 8 4 . 1 3 1 2 . . . . 1
. . 7 . 9 6 2 3 5 1 2 . 2 . . . . .
----------------- -----------------
index=38, Position(row: 6, col: 6), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 . . 2 3 1 9 7 4 . 2 2 . . . . . .
3 . . . 2 4 . 9 1 . 2 3 2 . . 1 . .
. . . . 5 3 8 4 . 1 3 1 2 . . . . 1
. . 7 . 9 6 2 3 5 1 2 . 2 . . . . .
----------------- -----------------
index=39, Position(row: 6, col: 1), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 . . 2 3 1 9 7 4 . 2 2 . . . . . .
3 . . . 2 4 6 9 1 . 1 2 2 . . . . .
. . . . 5 3 8 4 . 1 3 1 2 . . . . 1
. . 7 . 9 6 2 3 5 1 2 . 2 . . . . .
----------------- -----------------
index=40, Position(row: 5, col: 1), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 . . 2 3 1 9 7 4 . 1 2 . . . . . .
3 8 . . 2 4 6 9 1 . . 1 1 . . . . .
. . . . 5 3 8 4 . 1 3 1 2 . . . . 1
. . 7 . 9 6 2 3 5 1 1 . 2 . . . . .
----------------- -----------------
index=41, Position(row: 5, col: 2), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 . 2 3 1 9 7 4 . . 1 . . . . . .
3 8 . . 2 4 6 9 1 . . 1 1 . . . . .
. . . . 5 3 8 4 . 1 2 1 2 . . . . 1
. . 7 . 9 6 2 3 5 1 1 . 2 . . . . .
----------------- -----------------
index=42, Position(row: 6, col: 2), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 . . 2 4 6 9 1 . . 1 1 . . . . .
. . . . 5 3 8 4 . 1 2 1 2 . . . . 1
. . 7 . 9 6 2 3 5 1 1 . 2 . . . . .
----------------- -----------------
index=43, Position(row: 6, col: 3), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 . 2 4 6 9 1 . . . 1 . . . . .
. . . . 5 3 8 4 . 1 2 1 2 . . . . 1
. . 7 . 9 6 2 3 5 1 1 . 2 . . . . .
----------------- -----------------
index=44, Position(row: 7, col: 0), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 7 2 4 6 9 1 . . . . . . . . .
. . . . 5 3 8 4 . 1 2 1 1 . . . . 1
. . 7 . 9 6 2 3 5 1 1 . 2 . . . . .
----------------- -----------------
index=45, Position(row: 7, col: 2), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 7 2 4 6 9 1 . . . . . . . . .
2 . . . 5 3 8 4 . . 2 1 1 . . . . 1
. . 7 . 9 6 2 3 5 1 1 . 2 . . . . .
----------------- -----------------
index=46, Position(row: 7, col: 3), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 7 2 4 6 9 1 . . . . . . . . .
2 . 6 . 5 3 8 4 . . 2 . 1 . . . . 1
. . 7 . 9 6 2 3 5 1 1 . 2 . . . . .
----------------- -----------------
index=47, Position(row: 7, col: 1), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 7 2 4 6 9 1 . . . . . . . . .
2 . 6 1 5 3 8 4 . . 1 . . . . . . 1
. . 7 . 9 6 2 3 5 1 1 . 1 . . . . .
----------------- -----------------
index=48, Position(row: 7, col: 8), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 7 2 4 6 9 1 . . . . . . . . .
2 9 6 1 5 3 8 4 . . . . . . . . . 1
. . 7 . 9 6 2 3 5 1 1 . 1 . . . . .
----------------- -----------------
index=49, Position(row: 8, col: 0), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 7 2 4 6 9 1 . . . . . . . . .
2 9 6 1 5 3 8 4 7 . . . . . . . . .
. . 7 . 9 6 2 3 5 1 1 . 1 . . . . .
----------------- -----------------
index=50, Position(row: 8, col: 1), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 7 2 4 6 9 1 . . . . . . . . .
2 9 6 1 5 3 8 4 7 . . . . . . . . .
4 . 7 . 9 6 2 3 5 . 1 . 1 . . . . .
----------------- -----------------
index=51, Position(row: 8, col: 3), eval=1
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 7 2 4 6 9 1 . . . . . . . . .
2 9 6 1 5 3 8 4 7 . . . . . . . . .
4 1 7 . 9 6 2 3 5 . . . 1 . . . . .
----------------- -----------------
done
----------------- -----------------
7 2 3 4 6 9 1 5 8 . . . . . . . . .
8 5 1 3 7 2 4 6 9 . . . . . . . . .
6 4 9 5 1 8 7 2 3 . . . . . . . . .
9 7 4 6 8 5 3 1 2 . . . . . . . . .
1 3 2 9 4 7 5 8 6 . . . . . . . . .
5 6 8 2 3 1 9 7 4 . . . . . . . . .
3 8 5 7 2 4 6 9 1 . . . . . . . . .
2 9 6 1 5 3 8 4 7 . . . . . . . . .
4 1 7 8 9 6 2 3 5 . . . . . . . . .
----------------- -----------------
あなたは、IBM Swift Sandboxで、プログラムを自分で試すことができます。
struct Position {
var row: Int = -1
var col: Int = -1
}
struct Place {
var position = Position()
var val: Int = 0
}
class NumBoard {
var table = [[Int]]()
var tableEval = [[Int]](repeating:[Int](repeating:99, count:9), count:9)
var emptyPlaces = [Place]()
var sortedPlaces = [Place]()
var putPositions = [Position]()
var position = Position()
var place = Place()
var nplaces : Int = 0
init() {
table = [[7,0,3, 0,0,0, 0,0,0],
[0,5,1, 3,7,0, 4,0,0],
[6,0,0, 0,1,0, 0,2,0],
[0,0,4, 6,0,0, 0,0,0],
[0,0,0, 0,0,7, 0,8,0],
[5,0,0, 2,3,1, 9,0,0],
[3,0,0, 0,2,4, 0,9,1],
[0,0,0, 0,0,0, 8,4,0],
[0,0,7, 0,9,0, 2,0,0]]
for rr in 0...8 {
for cc in 0...8 {
if table[rr][cc] == 0 {
nplaces += 1
position.row = rr
position.col = cc
tableEval[rr][cc] = eval(position: position)
}
}
}
print("nplaces = \(nplaces) \n")
}
func myprint2(table: [[Int]], table2: [[Int]]) {
print("----------------- -----------------")
for rr in 0...8 {
for cc in 0...8 {
if table[rr][cc] >= 1 && table[rr][cc] <= 9 {
print(table[rr][cc], terminator: " ")
} else {
print(".", terminator: " ")
}
}
print(" ", terminator: "")
for cc in 0...8 {
if table2[rr][cc] >= 1 && table2[rr][cc] <= 9 {
print(table2[rr][cc], terminator: " ")
} else {
print(".", terminator: " ")
}
}
print("")
}
print("----------------- -----------------")
}
func eval(position: Position) -> Int {
var count = 0
for num in 1...9 {
if isSafeForNum(position: position, num: num) {
count += 1
}
}
return count
}
func isSafeForNum(position: Position, num: Int) -> Bool {
for rr in 0...8 {
if num == table[rr][position.col] { return false }
}
for cc in 0...8 {
if num == table[position.row][cc] { return false }
}
let rowBase = (position.row / 3) * 3
let colBase = (position.col / 3) * 3
for rr in 0...2 {
for cc in 0...2 {
if num == table[rowBase+rr][colBase+cc] { return false }
}
}
return true
}
func findPosition() -> Position {
var minVal = 99
var position = Position()
for rr in 0...8 {
for cc in 0...8 {
if tableEval[rr][cc] < minVal {
minVal = tableEval[rr][cc]
position.row = rr
position.col = cc
}
}
}
return position
}
func update(position: Position) {
let row = position.row
let col = position.col
var pos = Position()
tableEval[row][col] = 99
for rr in 0...8 {
if rr != row && table[rr][col] == 0 {
pos.row = rr
pos.col = col
tableEval[rr][col] = eval(position: pos)
}
}
for cc in 0...8 {
if cc != col && table[row][cc] == 0 {
pos.row = row
pos.col = cc
tableEval[row][cc] = eval(position: pos)
}
}
let rowBase = (row / 3) * 3
let colBase = (col / 3) * 3
let rowOffset = row - rowBase
let colOffset = col - colBase
for rr in 0...2 {
for cc in 0...2 {
if rr != rowOffset && cc != colOffset && table[rr+rowBase][cc+colBase] == 0 {
pos.row = rr + rowBase
pos.col = cc + colBase
tableEval[pos.row][pos.col] = eval (position: pos)
}
}
}
}
func dropNum(index: Int) {
position = findPosition()
print("index=\(index), \(position), eval=\(tableEval[position.row][position.col])")
myprint2(table: table, table2: tableEval)
for num in 1...9 {
if isSafeForNum(position: position, num: num) {
table[position.row][position.col] = num
putPositions.append(position)
update(position: position)
if putPositions.count == nplaces { return }
dropNum(index: index+1)
if putPositions.count != nplaces {
position = putPositions[putPositions.count - 1]
table[position.row][position.col] = 0
putPositions.removeLast()
update(position: position)
}
}
}
}
func play() {
dropNum(index: 0)
print("done")
myprint2(table: table, table2: tableEval)
}
}
// main program
let myboard = NumBoard()
myboard.play()
プログラムは多少冗長ですが、その分読み易くなっているつもりです。