2009年5月30日土曜日

(12) Ver.4でA サーチの自動化

SUDOKU_Ver4(May2006) では曲がりなりにも Hard の問題がクリック一発で自動的に解けるようになった。同時に問題のインプット方式も少しは改良された。問題入力は transfer_problem のマクロでsheet1の問題番号を入れるセルに入力した問題番号を読み取り、Sheet2に記載した問題をSheet1のA面に移す。Sheet2 にインプットした問題も Hard なものばかり 32題になっていた。

自動化の方は、新しく auto_search というマクロをつくった。このマクロは ippatsu と back_to_win を解が得られるまでnumk回繰り返す。ippatsu の中には search_single (BM サーチ)を含んでいるのでそれで行き詰ったときには、Ver.3 で手動でやっていた操作に切り替わる。仮定した数字でまた search_single を行うが、一回ではうまくいかないので、行き詰ると仮定する前の段階に戻り、新しい仮定した数字で実行する。

Sheet1のA画面にはその様子は逐次表示されるので、どのように解析が進んでいるのかわかり、 Final answer に到達したときには感動的である。numkを10回まわすと打ち切るようにしているが、これは Hard な問題では、空回りをおこすからだ。仮定法ではルートがねずみ算的に増えていくので、うまく数字を仮定すると一発で解けるし、そうでない場合にはすごく複雑なルーチンになる。最終的には5階層つまり32ルートを正確に自動的に解くのを Aサーチとしたがこれが完成するのはもっとあとのことであった。

0 件のコメント:

コメントを投稿