第31講 数独(ナンバープレイス)問題解決ソフトVer.2の制作
(数独(ナンバープレイス)問題作成ソフトに挑戦する人は☆☆)
第4話 問題全体構造解析に基づく入力順の構築はいかに可能か
1 | 4 | |||||||
3 | 9 | 6 | ||||||
5 | ||||||||
6 | 3 | |||||||
1 | 4 | 8 | ||||||
2 | 3 | 6 | ||||||
5 | ||||||||
4 | 8 |
問題全体構造解析
* | 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 |
問題全体構造解析に基づく入力順の構築
* | 48 | 21 | 1 | 22 | 7 | * | 23 | 24 |
2 | 25 | * | * | 26 | * | 27 | 8 | 28 |
29 | 59 | 49 | 30 | 50 | 31 | 63 | 51 | 52 |
32 | 60 | 53 | 3 | 54 | * | 33 | 55 | 34 |
9 | 61 | * | 0 | 10 | 11 | 35 | 56 | * |
12 | 36 | 13 | 4 | * | * | 37 | * | 14 |
5 | 15 | 16 | * | 17 | 6 | 38 | * | * |
* | 62 | 39 | 40 | 41 | 18 | 42 | 43 | 57 |
* | 58 | 19 | * | 44 | 20 | 45 | 46 | 47 |
今回の考察は、問題全体構造解析に基づく入力順の構築はいかにしたら可能かです。
次のように方法も考えられます。
第12講 様々な並び替えの方法△
第1話 最大値・最小値
第2話 並び替えその1
第3話
並び替えその1の解説
第4話
並び替えその2
第5話 並び替えその2のソース
第6話 並び替え第3の方法
第7話 並び替え第3の方法の改良の試み
第8話 分類法ソースコードの解説
第9話 分類法ソースコードの解説の続き
第10話 分類法と最大値最小値排除法の比較ソフト
第11話 setによる並び替えnew!
でやった方法です。つまり、全データ63個の中から最小値を探します。
最小値が複数ある場合は、一番最初に見つかったものを0番目とします。
それが、見つかったらその1個を排除し、残りの62個から最小値を探し出します。
ここでも最小値が複数ある場合は、一番最初に見つかったものに次の番号1を割り振ります。
以下同様なことを61回繰り返せば、すべてに番号を割り振ることが出来ます。
この番号が入力順です。
しかし、今回は最小値は1から9の間の整数であることがわかっていますので、もっと単純な番号付けが可能です。
最大個数の中で1に等しいものがあったら、それに番号を割り振ります。
ここでも複数ある場合は、最初に見つかった方を0とします。
次に、同じ1で見つかった場合は順に1,2と割り振っていきます。
以下2以降でも同じことを繰り返せば、入力順の構築は出来上がります。
では皆さん、コードに挑戦しましょう。
第3話へ 第5話へ
VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual
Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)