第24講 数独解答作成の作成
第1話 数独とは?
それでは,世界的大流行を見せている数独すなわちナンバープレイスに挑戦しましょう。
数独とは何でしょうか。
発明された方は、アメリカの建築家ハワード・ガーンズで、
それを世界的に流行させたのは日本のパズル雑誌社のニコリだ聞いています。
日本以外では、イギリスで大流行し、それが各国に波及しルービック・キューブ以来の大流行で、
世界大会が開催されるほど人気があるそうです。
私が開発した数独問題作成ソフトVer7がつくった問題例とその解答を掲載してから、数独とは何か説明しましょう。
数独のルールは次の3つです。
@ 行に同じ数字が入ってはいけない。
A 列に同じ数字が入ってはいけない。
B 同一ブロックに同じ数字が入ってはいけない。
解答をご覧になって、各列・各行・各ブロックに同じ数字が入っていない、
すなわち、それぞれには必ず1から9までの数字1つずつ入っていることをご確認下さい。
読者の皆さん、これって何かに似ていませんか。
そうです。特殊種です。
第19講 特殊種による魔方陣ソフトの高速化 ☆ 第1話 特殊種とは?
を参照されて下さい。
ただし、特殊種のルールは、
@ 行に同じ数字が入ってはいけない。
A 列に同じ数字が入ってはいけない。
B 対角線に同じ数字が入ってはいけない。
でした。つまり、特殊種と数独は@Aが共通で、、
特殊種のBの対角線の条件がブロックの条件に変わったものが数独なのです。
この講は☆がついているので、第19講は皆さんお読みになっているはずです。
お読みになっていない方は、是非熟読されて下さい。
したがって、数独の解答を作らせるプログラムは、
第19講の特殊種のプログラムを参考にすればできるわけです。
ただし、数字を入れていく順番である番号付けは、特殊種のときのように、
0 | 1 | 2 | 3 | 4 | |
0 | 0 | 9 | 10 | 11 | 5 |
1 | 12 | 1 | 13 | 6 | 14 |
2 | 15 | 16 | 2 | 17 | 18 |
3 | 19 | 7 | 20 | 3 | 21 |
4 | 8 | 22 | 23 | 24 | 4 |
のような複雑な番号付けをする必要はありません。
特殊種の場合、対角線以外が@Aだけを満たせばよいのに対して、
対角線上のセルは@ABと3つの条件を満たす必要があり、
対角線上のセルの方が、困難な条件を付けられていたため、
そこから埋めていく必要がありました。
条件の厳しいところから、
クリアしていくのが問題解決の鉄則だからです。
ところが、数独場合はすべてのセルが@AB
の3つの条件を満たさなければならず、
全セルの条件の厳しさは同じです。
つまり、すべてのセルが平等で特別なセルはありません。
したがって、番号付けは次のような単純なものでよいのです。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 |
36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 |
54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 |
63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 |
72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 |
さて、第19講を参考に皆さん挑戦されて下さい。今回の課題の難しさは、
ブロックの条件を如何にクリアするかです。
VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual
Basic入門基礎講座