第4講 数独を解くソフトの開発(1)
第1話 数独自動問題作成アプリの開発なのに問題を解くソフトの開発がなぜ必要?
ナンプレの問題を自動生成させるソフトを開発することが目的なのに、
どうしてナンプレの問題を解くソフトの開発なの?
と感じましたか。
第1講のお復習いになりますが、
とても大切なことですので、
もう1回詳しく説明します。
第1講第2話で数独を作成の方法は、
Ⅰ.問題作成
Ⅱ.問題を解く
または、
①.問題を解く
②.解答から問題を作成する
であると申し上げました。
Ⅱでは17以上のヒント数がある数独を解くので、
数独を解くソフトは不可欠であることはいうまでもありません。
では、①②の手順をとるときはどうですか。
①はヒント数0の状態から解答を作るので、
ヒント数17以上の数独を解いているわけではありません。
だったら、どこにヒント数17以上の問題を解く必要性があるのでしょうか。
本当は③があるのです。
問題を作成した後、
別解がないことと理詰めで解けることを確認するために、
③ヒント数17以上である数独を解く
が必要なのです。
ですから、ⅠⅡの手法をとるにせよ、
①②③の手法をとるにせよ、
いずれにしても問題を解くソフトが不可欠なのです。
実は、解法エンジンの善し悪しがナンプレ自動生成ソフトの善し悪しを決定する鍵なのです。
解法エンジンは最初は仮定法を取り入れますが、
理詰め解法エンジンに後ほど高めます。
実は、理詰め解法エンジンさえ開発できれば、
ナンプレ自動作成アプリの開発は8割がた出来たと言ってもよいほどなのです。
解法エンジンこそが、
数独自動出題ソフトの核なのです。
この講では、
数独自動生成新方式アプリ(ハイブリッド方式)Ver.5
が作成した問題
を解かせることを考えましょう。
もちろん、私が開発した数独自動生成アプリは理詰めで解ける問題しか生成しないので、
理詰めで解けるのですが、
理詰め解法エンジンの開発は、
Z難度級ですから、本講義の最後の方になりますので、
ここでは仮定法=試行錯誤法=トライアンドエラーによって解かせます。
そして、最初は第2講と第3講で開発した
「試行錯誤法でヒント数0数独の解答を作る」ソフトを直接に応用してから、
改良して解く速度を100倍加以上上げます。
第2講と第3講で開発したソフトは、
ヒント数0数独を1個あたり0.000083秒辺りで作り出してしまうソフトですから、
あっという間に解けるにちがいないと皆さんは予想されるでしょうが、
結果は・・・です。
驚愕の結果が待っています。
皆さん次の添付ファイルをクリックすることによってそのファイルをダウンロードしてください。
参考ダウンロード添付ファイル
添付ファイルを改良していくことによって、
問題を解くソフトの開発を行います。
このファイルは当然まだ実行ボタンを押しても何も起きません。
なぜならヒント数0数独=疑似数独を解かせるエンジンしか載せていませんし、、
そのエンジンへのアクセスを注釈文にして禁じているからです。
では、第4講最初の課題です。
B4からJ12までのデータをm(i, j)への入力を以下の条件で行います。
もちろん空欄のときには0を代入して、
空欄でないときはその欄の数字を代入します。
そして、結果をB14からJ22までに出力して、
さらにヒント数も表示させてください。
B14からJ22への出力とヒント数表示は専用のSub プロシージャで行ってください。