第13講 プロシージャの再帰的使用による数独解答自動生成
第1話 ラテン方陣
数学者オイラーの考えたものに
ラテン方陣というのがあります。
このラテン方陣が数独の基になっているといわれます。
3次・4次・5次・7次のラテン方陣の例を挙げましょう。
1 | 2 | 3 |
3 | 1 | 2 |
2 | 3 | 1 |
4 | 2 | 1 | 3 |
2 | 4 | 3 | 1 |
3 | 1 | 2 | 4 |
1 | 3 | 4 | 2 |
1 | 2 | 4 | 5 | 3 |
4 | 3 | 5 | 2 | 1 |
2 | 4 | 1 | 3 | 5 |
5 | 1 | 3 | 4 | 2 |
3 | 5 | 2 | 1 | 4 |
1 | 2 | 3 | 4 | 5 | 6 | 7 |
2 | 1 | 4 | 3 | 6 | 7 | 5 |
3 | 4 | 1 | 2 | 7 | 5 | 6 |
4 | 5 | 6 | 7 | 1 | 2 | 3 |
5 | 6 | 7 | 1 | 4 | 3 | 2 |
7 | 3 | 5 | 6 | 2 | 1 | 4 |
6 | 7 | 2 | 5 | 3 | 4 | 1 |
この例からラテン方陣とは何かお分かりでしょう。
1~nまでの数字が列と行に
重複なく漏れなく入っている方陣です。
つまり、
9次または16次のラテン方陣なら
数独からブロックの条件を外したものです。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
2 | 1 | 4 | 3 | 6 | 5 | 8 | 9 | 7 |
3 | 4 | 1 | 2 | 7 | 8 | 9 | 5 | 6 |
4 | 3 | 2 | 1 | 8 | 9 | 6 | 7 | 5 |
5 | 6 | 7 | 8 | 9 | 1 | 2 | 3 | 4 |
6 | 5 | 8 | 9 | 1 | 7 | 3 | 4 | 2 |
7 | 8 | 9 | 6 | 3 | 4 | 5 | 2 | 1 |
9 | 7 | 6 | 5 | 2 | 3 | 4 | 1 | 8 |
8 | 9 | 5 | 7 | 4 | 2 | 1 | 6 | 3 |
逆に言うとラテン方陣にブロックの条件を付け加えると、
数独になる訳です。
皆さん第12講第5話で作った魔方陣自動生成ソフト
を改良してラテン方陣を作らせるソフトを作成しましょう。
初心者のためのc++ vc++ c言語 入門 基礎から応用までへ
初心者のための excel 2007 2010 2013 vba マクロ 入門 基礎から応用まで
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義トップへ
VB講義基礎へ
専門用語なしのC++入門へ
専門用語なしのJava入門へ
専門用語なしのVBA入門
数独のページ
魔方陣のページ
数学研究室に戻る
本サイトトップへ