候補数値の少ないマスからチェックするように改造します。変更は、getBlankだけになります。このプロシージャーで、次に試行するマスを決定しているので、この時に、候補数値のより少ないマスを返すように変更します。Function1~9を回し、chkSuがTrueのカウントをとり、最も小さいマスを返すようにしています。実際に動かしてやってみて下さい。以前は、試行回数が数万程度だったものが、数百程度に減っています。処理時間も激減しています。数種類の問題で、セルへの途中表示をコメントアウトし試したところ、No1のアルゴリズムは、1万~7万の試行回数で、0.2秒~0.8秒No2のアルゴリズムは、90~800の試行回数で、0.1秒~0.4秒いきなり、大幅に改善されてしまいました。ここがアルゴリズムの要点だったのです。労多くして実り少ない事になるでしょう。数独を解くセオリーを調べ、それをプログラミングしようとしてしまいます。最期は全数チェックに頼らざる負えなくなります。この全数チェックのアルゴリズムは避けて通れないのです。この全数チェックを、より有効なアルゴリズムにする事が、パフォーマンスを上げる一番の近道だと考える事も出来ます。この時、アルゴリズムの要点をどう見つけるか・・・これには、経験と勘が必要であり、また、実際の動きを注意深く観察する事も重要なのです。理論と実践、この繰り返しになります。数独(ナンプレ)を解くアルゴリズムの要点とパフォーマンスの検証No2このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。数独(ナンプレ)を解くアルゴリズムの要点とパフォーマンスの検証No2このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。