広島県 清川 育男 さんが 「数独」作成プログラムを作られたそうです。
十進ベーシックで(OUT OF MEMORY)にならない制約で、RANDOMIZE を使って位置と数字を決め、単一解であれば、それが問題となるそうです。
◆広島県 清川 育男 さんからのコメント。
ヒント数24個の問題を紹介します。
DATA 8 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 9 DATA 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 2 DATA 0 , 0 , 0 , 0 , 6 , 5 , 0 , 0 , 0 DATA 0 , 0 , 0 , 0 , 3 , 0 , 0 , 0 , 0 DATA 3 , 8 , 5 , 0 , 0 , 6 , 0 , 0 , 0 DATA 0 , 6 , 0 , 0 , 1 , 7 , 8 , 0 , 0 DATA 0 , 0 , 0 , 0 , 0 , 1 , 0 , 9 , 3 DATA 0 , 5 , 0 , 0 , 0 , 0 , 6 , 4 , 0 DATA 7 , 0 , 2 , 0 , 9 , 0 , 0 , 0 , 0
高橋 謙一郎さんの掲示番からの情報です。
最小のヒント数は16が可能かどうかということのようです。
17個の問題が載っていたので解かせてみました。
同じような発想からスタートするようですね。
0 9 8 0 0 0 0 0 0 0 0 0 0 7 0 0 0 0 0 0 0 0 1 5 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 9 0 0 0 9 0 6 0 8 2 0 0 0 0 0 0 0 3 0 5 0 1 0 0 0 0 0 0 0 0 0 4 0 0 0 2 0 1 局面 2 局面 4 局面 28 局面 234 局面 234 局面 深度 6 7 9 8 6 2 4 3 1 5 3 1 5 8 7 9 2 4 6 2 6 4 3 1 5 9 7 8 1 2 9 5 8 7 4 6 3 6 8 3 2 4 1 7 5 9 4 5 7 9 3 6 1 8 2 9 4 2 1 5 8 6 3 7 5 3 1 7 6 2 8 9 4 8 7 6 4 9 3 5 2 1 15.8800000000001 OK 0 局面 答え 1 個 探索終了
◆静岡県 ふーさん さんからの解答
9,7,4‖5,3,1‖6,8,2 1,2,5‖8,6,9‖3,7,4 8,6,3‖7,4,2‖1,9,5 ========== 6,3,8‖2,5,4‖9,1,7 2,9,1‖3,8,7‖5,4,6 5,4,7‖9,1,6‖8,2,3 ========== 3,1,6‖4,2,8‖7,5,9 4,5,9‖1,7,3‖2,6,8 7,8,2‖6,9,5‖4,3,19行9列の行列と考える。
◆広島県 清川 育男 さんからの解答
9,7,4‖5,3,1‖6,8,2 1,2,5‖8,6,9‖3,7,4 8,6,3‖7,4,2‖1,9,5 ========== 6,3,8‖2,5,4‖9,1,7 2,9,1‖3,8,7‖5,4,6 5,4,7‖9,1,6‖8,2,3 ========== 3,1,6‖4,2,8‖7,5,9 4,5,9‖1,7,3‖2,6,8 7,8,2‖6,9,5‖4,3,1A(9,9) としたとき、A(2,4)=8,A(2,5)=6,A(2,6)=9が直ちに決定されます。
0 0 4 5 3 1 6 0 0 0 2 0 0 0 0 0 7 0 8 0 0 7 4 2 0 0 5 6 0 8 0 0 0 9 0 7 2 0 1 0 8 0 5 0 6 5 0 7 0 0 0 8 0 3 3 0 0 4 2 8 0 0 9 0 5 0 0 0 0 0 6 0 0 0 2 6 9 5 4 0 0 第1回目のチェック A( 2 , 5 )= 6 ,A( 2 , 6 )= 9 ,A( 5 , 8 )= 4 ,A( 6 , 5 )= 1 , A( 6 , 8 )= 2 ,A( 7 , 3 )= 6 ,A( 8 , 3 )= 9 ,A( 8 , 5 )= 7 , A( 8 , 6 )= 3 , 0 0 4 5 3 1 6 0 0 0 2 0 0 6 9 0 7 0 8 0 0 7 4 2 0 0 5 6 0 8 0 0 0 9 0 7 2 0 1 0 8 0 5 4 6 5 0 7 0 1 0 8 2 3 3 0 6 4 2 8 0 0 9 0 5 9 0 7 3 0 6 0 0 0 2 6 9 5 4 0 0 第2回目のチェック A( 2 , 1 )= 1 ,A( 2 , 4 )= 8 ,A( 2 , 7 )= 3 ,A( 2 , 9 )= 4 , A( 3 , 3 )= 3 ,A( 3 , 7 )= 1 ,A( 3 , 8 )= 9 ,A( 4 , 5 )= 5 , A( 4 , 6 )= 4 ,A( 4 , 8 )= 1 ,A( 5 , 6 )= 7 ,A( 6 , 4 )= 9 , A( 6 , 6 )= 6 ,A( 7 , 7 )= 7 ,A( 7 , 8 )= 5 ,A( 8 , 1 )= 4 , A( 8 , 4 )= 1 ,A( 8 , 7 )= 2 ,A( 8 , 9 )= 8 ,A( 9 , 1 )= 7 , A( 9 , 8 )= 3 ,A( 9 , 9 )= 1 , 0 0 4 5 3 1 6 0 0 1 2 0 8 6 9 3 7 4 8 0 3 7 4 2 1 9 5 6 0 8 0 5 4 9 1 7 2 0 1 0 8 7 5 4 6 5 0 7 9 1 6 8 2 3 3 0 6 4 2 8 7 5 9 4 5 9 1 7 3 2 6 8 7 0 2 6 9 5 4 3 1 第3回目のチェック A( 1 , 1 )= 9 ,A( 1 , 2 )= 7 ,A( 1 , 8 )= 8 ,A( 1 , 9 )= 2 , A( 2 , 3 )= 5 ,A( 3 , 2 )= 6 ,A( 4 , 2 )= 3 ,A( 4 , 4 )= 2 , A( 5 , 2 )= 9 ,A( 5 , 4 )= 3 ,A( 6 , 2 )= 4 ,A( 7 , 2 )= 1 , A( 9 , 2 )= 8 , 9 7 4 5 3 1 6 8 2 1 2 5 8 6 9 3 7 4 8 6 3 7 4 2 1 9 5 6 3 8 2 5 4 9 1 7 2 9 1 3 8 7 5 4 6 5 4 7 9 1 6 8 2 3 3 1 6 4 2 8 7 5 9 4 5 9 1 7 3 2 6 8 7 8 2 6 9 5 4 3 1完成。
◆東京都 明 さんからの解答
9,7,4‖5,3,1‖6,8,2 1,2,5‖8,6,9‖3,7,4 8,6,3‖7,4,2‖1,9,5 ========== 6,3,8‖2,5,4‖9,1,7 2,9,1‖3,8,7‖5,4,6 5,4,7‖9,1,6‖8,2,3 ========== 3,1,6‖4,2,8‖7,5,9 4,5,9‖1,7,3‖2,6,8 7,8,2‖6,9,5‖4,3,1求め方
◆群馬県 天10 さんからの解答
9,7,4‖5,3,1‖6,8,2 1,2,5‖8,6,9‖3,7,4 8,6,3‖7,4,2‖1,9,5 ========== 6,3,8‖2,5,4‖9,1,7 2,9,1‖3,8,7‖5,4,6 5,4,7‖9,1,6‖8,2,3 ========== 3,1,6‖4,2,8‖7,5,9 4,5,9‖1,7,3‖2,6,8 7,8,2‖6,9,5‖4,3,1求め方
◆大阪府 yamagata さんからの解答
9,7,4||5,3,1||6,8,2 1,2,5||8,6,9||3,7,4 8,6,3||7,4,2||1,9,5 ===== ===== ===== 6,3,8||2,5,4||9,1,7 2,9,1||3,8,7||5,4,6 5,4,7||9,1,6||8,2,3 ===== ===== ===== 3,1,6||4,2,8||7,5,9 4,5,9||1,7,3||2,6,8 7,8,2||6,9,5||4,3,1タテとヨコの列と小枠にすでにはいっている数字をみながら空いているマスにいれられない数字を消去していきのこった数字をすでに入っている数字の並びと検討して絶対ここでしかないという決定的な数字をいれていく。
◆ 問題へもどる
◆ 今週の問題へ