2016年10月31日月曜日

数独を解く2

10月28日付けブログの数独を解くプログラムで、数独を解いてみた。連続的に解くために若干の修正をしたが、本質的には変わりない。

サンプルとして挙げた「超極・激」には、対角線指定や、変形3×4などが含まれており、それらを除いた通常のもの130題を解いたものである。

出力の冒頭を以下に示す。



問題と解答と所要時間を示した。

解答時間の平均は0.692秒 最大3.44秒であった。使用マシンのCPUはi7である。解答時間の分布は



詳細を検討してみると、checkだけで解けているものも多数あり、solveを用いて試行錯誤的にアプローチしているものも多い。solveを用いた場合、再帰の深さは結構深いのが目につく。

前回の解法アルゴリズムで、1つのグループ内に例えば5の可能性のあるマスが1つだけならばそこが5である、というアルゴリズムを最後に付け加えた。

これを拡張して、1つのグループ内に可能性が5と8だけであるマスが2つあれば、そのグループのほかのマスからは5と8の可能性が削除できる。

また、1つのグループ内に 可能性5と8を含むますが2つだけならば、その2つのマスの5と8以外は削除できる。

さらに拡張すると、1つのグループ内に例えば可能性が5と8と9だけであるマスが3つあれば、そのグループのほかのマスからは5と8と9の可能性が削除できる。この場合、この3つのマスのうちの1つは「5と8」でもよい。など。

これらについてはまだ、実装してない。

0 件のコメント:

コメントを投稿