第31講 数独(ナンバープレイス)問題解決ソフトVer.2の制作
(数独(ナンバープレイス)問題作成ソフトに挑戦する人は☆☆)


第1話 問題全体構造解析とは?
c++

* 6 5 3 5 4 * 5 5
3 5 * * 5 * 5 4 5
5 7 6 5 6 5 8 6 6
5 7 6 3 6 * 5 6 5
4 7 * 1 4 4 5 6 *
4 5 4 3 * * 5 * 4
3 4 4 * 4 3 5 * *
* 7 5 5 5 4 5 5 6
* 6 4 * 5 4 5 5 5

問題構造解析お分かりになりましたか。まず、赤のセルに注目してください。
vc++に入る可能性のある数字は何でしょうか。
まず、行(横)の条件から6,3が除外されます。
次に、列(縦)の条件から9,2,8が候補から外されます。
最後、ブロックの条件から5,1,4も対象外となります。
すると残っている数字は、7のみです。
実は入門にはいる数字は7のみなのです。
セルに入る可能個数とその候補をリストすること(この場合は7をリスト)、全体構造解析の目的です。

1

つまり、この数字1は可能な数字の個数を示しています。
次に初心者に注目しましょう。
ここは、行の条件から1,4の可能性が除かれます。
次に列の条件から、9,2,8が対象から外されます。
最後ブロックの条件から、さらに6が排除されます。
すると残っている可能な数字は、3,5,7の3個のみです。

3

はその3個を意味しているのです。そして、3,5,7が候補としてリスト(登録)されます。
可能最大個数とリストをリスト構造と呼びたいと思います。
構造という名称を使うのは、セルのリストは互いに影響を受けるからです。
あるセルに数字が入ることによって、その行と列とブロックのセルのリストが変わります。
セル同士が互いに相互作用する仕組みになっているので、構造です。
ですから、構造解析とはリスト構造の解明を任務としています。
では、なぜ全体というのでしょうか。
それは、セル全体を解析するからです。
Ver.3まで行くと、セルに数字を入力したことによって影響を受ける部分だけを解析する問題部分解析が導入されます。
ところが、この問題部分解析が大変な難問なのです。



皆さん、その他の場合も確認して下さい。
構造解析の意味はお分かりかと思います。
では、なぜ構造解析とそれに基づく入力順の構築が必要なのでしょうか。


第30講第16話へ 第2話へ

戻る

VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)