第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入門講義(基礎から応用まで)