数独の解き方

数独をやってみたけど、めんどいので機械に解かせることにした。
解き方は簡単。

まず、絞込み

  • 各セルに全部の数値を入れておく。
  • 問題からひとつづつ値を取り出し
    • 該当セルはその値だけにする
    • グループ、縦、横で、同族になるセル全部からその値を取り除く
      • セルの値が1つになったら、同様にチェックする

これだけでは必ず一つの解が出るとは限らない。解けない状況は発見される。

このデータを下に探索:

  • 複数候補のあるセルのひとつを、どれか適当な値で拘束して再び上記手順で絞り込む。
    • 解けないときはその候補を消す。
    • 複数候補が残るときはさらに消す。
    • 1つになれば終わり

解をひとつ見つければよい場合は、上記手順を繰り返せば見つかる。全部見つける場合は8クイーンのようになるかな。