第31講 数独(ナンバープレイス)問題解決ソフトVer.2の制作
(数独(ナンバープレイス)問題作成ソフトに挑戦する人は☆☆)
第3話 問題全体構造解析はどのようにしたら出来るか

| * | 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 |
リストはどうのようにしたら出来るでしょうか。
| 1 | 4 | |||||||
| 3 | 9 | 6 | ||||||
| 5 | ||||||||
| 6 | 3 | |||||||
| 1 | 4 | 8 | ||||||
| 2 | 3 | 6 | ||||||
| 5 | ||||||||
| 4 | 8 |
(座標(3,4)(座標は0から始まるので3,4です。))を例に説明しましょう。最初にすべてをリストしておきます。
| 座標(3,4)のリスト | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |

まず、行の条件から6と3をリストから外します。
このときは省いた候補数もカウントしておきます。
カウントは2です。
| 座標(3,4)のリスト | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| ○ | ○ | × | ○ | ○ | × | ○ | ○ | ○ |
次に、
列の条件から9,2,8を除外します。
| 座標(3,4)のリスト | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| ○ | × | × | ○ | ○ | × | ○ | × | × |
カウントは重複がないので2+3=5となります。
最後に、
ブロックの条件から1,4,5を対象外にします。
| 座標(3,4)のリスト | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| × | × | × | × | × | × | ○ | × | × |
今回も重複がないのでカウントは5+3=8となります。
残っている候補は、7のみです。
したがって、最大可能個数は9-8=1です。
これで座標(3,4)
のリストと最大可能個数が求まりました。
| 1 | 4 | |||||||
| 3 | 9 | 6 | ||||||
| 5 | ||||||||
| 6 | 3 | |||||||
| 1 | 4 | 8 | ||||||
| 2 | 3 | 6 | ||||||
| 5 | ||||||||
| 4 | 8 |
次に、座標(0,3)
のリストを追ってみましょう。
| 座標(0,3)のリスト | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
まず行の条件
| 1 | 4 |
から1,4が候補から除外されます。
| 座標(0,3)のリスト | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| × | ○ | ○ | × | ○ | ○ | ○ | ○ | ○ |
外した候補数は2です。
次に、
| 9 |
| 2 |
| 8 |
列の条件から9,2,8を外します。
| 座標(0,3)のリスト | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| × | × | ○ | × | ○ | ○ | ○ | × | × |
外した候補数は2+3=5です。
最後に
| 9 | 6 | |
ブロックの条件から9,6を外します。
| 座標(0,3)のリスト | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| × | × | ○ | × | ○ | × | ○ | × | × |
6が重複していたので外した候補数は5+2-1から6です。
表で○、×で表しているところは実際には1と0を対応させればコードが出来ます。
第2話へ 第4話へ

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