数独は、一般に「ナンバープレース(ナンプレ)」と呼ばれ、外国では「sudoku」と呼ばれているようです、
この数独をExcelマクロVBAで解いてみようと言う事です。解き方は、とにかく片っ端から数字を当てはめていくという、なんとも芸の無い方法です。(笑)作ってみようと思い立ったのですが、そもそも数独はあまりやったことが無く、効率的な解き方とかは、私は知らないので、手当たり次第に数値を当てはめていけば何とかなるだろうと・・・とりあえず何とかなりましたので、掲載します。数独のルール
・空いているマスに1~9のいずれかの数字を入れる。・縦、横の各列及び、太線で囲まれた3×3のブロック内に同じ数字が複数入ってはいけない。非常に単純なルールなので、プログラム練習には向いていますね。このようなシートを用意します。
問題は、適当に探して下さい。上記は、ネットで適当に探しました。もし、著作権みたいなものがあるならゴメンナサイ。実行結果
VBAを実行すると、以下のように回答がでます。途中結果をセルに表示しなければ、約1秒程度で回答がでます。途中結果をセルに表示すると、かなり時間がかかります。それだけ、試行錯誤の繰り返しだと言う事です。でも、途中結果をセルに表示して、のんびり見ていると、PCが試行錯誤している様が確認できて、結構楽しいです。次回は、解法の具体的なアルゴリズムをもう少し掘り下げます。
№2へ続きます。数独(ナンプレ)を解くVBAに挑戦 №1 №2 №3 №4 №5※数独(ナンプレ)を解くアルゴリズムの要点とパフォーマンスの検証数独(ナンプレ)を解くアルゴリズムを例に、アルゴリズムの要点と、それによるパフォーマンスを検証します、数独(ナンプレ)を解くVBAに挑戦 ここでは、とにかく全ての数字を当てはめていくという、いわば全数チェックでの解法を使いました。考察するまでもなく、かなりの無駄がある事は明白です。こちらの最終完成版のダウンロード同じテーマ「マクロVBAサンプル集」の記事アメブロの記事