- ベストアンサー
Excelの一般機能で数毒解法に挑戦
Excelの一般機能で数毒解法に挑戦 私は別添図のようなものを考えました 1~9ブロックはあらかじめ青で塗りつぶし 解答入力ブロックをセル参照しています そして数字が入力されればピンクになるよう条件付き書式を設定しておきます 解答入力ブロックに問題入力 例えば1のブロックで1が入った小ブロックおよび行・列をピンクで塗りつぶします そこまでやったのが添付図です そこで各ブロックの小ブロックおよび行・列で1つだけ残った青のセルにはそのブロックの数字を解答ブロックに入力 これだと難度の低い問題は良いのですが 難度が高くなった場合 キーとなるセルを発見できません このキーとなるセルの発見方法について何かヒントでもいただければと思っての質問です よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
期待されている回答かどうか判りませんので見当違いならスルーして下さい。 質問者さんのおっしゃる「キーとなるセル」がどのようなものか判りませんが、 私の考える「キーとなるセル」とは ・そのセルの数値を確定することで他のセルに入る可能性のある数字の総数がもっとも少なくなるセル と考えます。 となるとプログラムとしては ・あるセルに設定可能な数値を一つ入れてみて、他のセルに入れることができる数値の総数を計算 ・全てのセルに対して上記処理を繰り返し、一番総数が少ないものをキーとなるセルとする ・ただし全く数値が入ることができないセルが一つでも存在したら最初に設定した数値は無効とする ということになります。 しかし難しい数独の場合は簡単にセルに入る数値が決定できないように考えられています。 そのため上記処理を繰り返して2、3手先、下手したら10手先まで考えた上で一番良いセルを探すことが必要です。 これをまともに計算すると処理量が莫大になるため、処理の途中でキーセルになり得だろうセルについては計算から除外する必要があります。 この考え方は結果が不明な状況で最善手を探す将棋や囲碁と同じです。 上記のような処理がエクセルの標準機能だけで実現できるかどうかは不明ですが、参考になれば幸いです。
その他の回答 (1)
ブロック内、たて列内、よこ列内で、おなじ組み合わせ数字の予約マスを検出し、ほかのマスに埋める候補数字から予約マスに入れる組み合わせ数字を除外する手順を組み込んでみてください。 たとえば、同ブロック内の2つのマスに4か8しか入らない予約マスが見つかったら、同ブロック内の残りの空きマスに埋まる候補数字から4と8は除外できます。
お礼
ありがとうございました
お礼
ありがとうございました 良く理解できない部分もありますがおぼろげながら手掛かりをいただいたように思います 「キーとなるセル」とはうまく説明できませんが 回答いただいたことと多分同じことだと思いますが あるセルの数字が確定すると次々と連鎖的に他のセルの数字も確定していくようなセルのことです