第14講 4次及び6次魔方陣の作成
第1話 4次及び6次魔方陣を作成するには?

今の学習段階では、魔方陣や数独(ナンバープレイス)問題の自動生成は無理です。
講義が進行すると、皆さんも自動生成プログラムの制作が出来るようになるでしょうが、
現時点では、不可能です。

今回、制作していただくのは私の発見した『偶数次魔方陣の作成方法』を適応して、
魔方陣を作成するプログラムです。
コンピュータが自分で発見するのではなく、
プログラマーの指示の通りに、命令を実行すると魔方陣が完成するというものです。
講義がかなり進んだ段階で挑戦する魔方陣自動生成は、
コンピュータが自ら考えて自ら発見するプログラムです。
『市販されているDSの数独のソフトでさえ、数独問題の自動生成が出来ないのに、
初心者に自動生成のプログラムなんて組めるの?』という疑問に対して、Yesと答えておきます。
この講義を粘り強く読んでいけば、魔方陣と数独(ナンバープレイス)問題の自動作成が出来るようになる、
と予告しておきましょう。

奇数次魔方陣には、昔から魔方陣の法則など作成方法が知られていました。
それに対して、偶数次魔方陣には一般的な作成方法がないとされてきました。
ところが、偶数次にも実は簡単な作成方法があることを私は発見しました。
詳しくは、小学生・中学生のための魔方陣授業(初歩から最新研究まで)
第28回 新魔方陣の法則(偶数次版魔方陣の法則)第1弾
第29回 新魔方陣の法則(偶数次版魔方陣の法則)第2弾をお読みになるか、
エクセルVBAマクロ偶数次版魔方陣の法則開いていろいろ実行していただきたいと思いますが、
4次と6次の場合については、ここでも説明しておきましょう。

まず、4次から。

4次魔方陣を作成する方法は、
非常に簡単です。

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

1から16まで普通に並べておいて、ピンクの部分を中心に対して点対称移動すればいいのです。

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

逆に、緑の部分を中心に対して点対称移動しても出来ます。

1 15 14 4
12 6 7 9
8 10 11 5
13 3 2 16


6次魔方陣は、やはり1から36まで自然に並べておいて、

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

ピンクは、中心に対して点対称移動
は、中央の直線に対して左右のの線対称移動
薄緑は、中央の直線に対して上下の線に線対称移動
させると、

36 32 4  3 5 31
12 29 27 10 26 7
19 17 22 21 14 18
13 20 16 15 23 24
25 11 9 28 8 30
6 2 33 34 35 1

6次魔方陣が完成します。注目は、

36 32 4
12 29 27
19 17 22

の部分。斜め下に下がっていくという明確な法則性がありますね。
後は、上と下に鏡をおけば移動箇所がはっきりします。

点対称移動や線対称移動させるには、(1,36)(29,58)・・・(3,5)(7,12)・・・(13,19)
を交換すればよいのです。
そして、交換については
第12講 並び替えの方法その1
 第2話 交換プログラム
で学んでいます。さて、皆さんJavaで次の手順で挑戦してみましょう。
手順
Ⅰ 4次自然配列の生成

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16

Ⅱ 対角線の交換による魔方陣の完成

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

Ⅲ 6次自然配列の生成

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

Ⅳ 対角線の交換

36 2 3  4 5 33
7 29 9 10 27 12
13 14 22 21 17 18
19 20 16 15 23 24
25 11 27 28 8 30
6 32 33 34 35 1

Ⅴ 中央の直線に対しても左右対称移動

36 2 4  3 5 33
12 29 9 10 27 7
13 17 22 21 14 18
19 20 16 15 23 24
25 11 27 28 8 30
6 32 33 34 35 1

Ⅵ 中央の直線に対しても上下対称移動

36 32 4  3 5 33
12 29 27 10 27 7
19 17 22 21 14 18
13 20 16 15 23 24
25 11 9 28 8 30
6 2 33 34 35 1

まず、Ⅰを考えましょう。



第13講第8話へ 第2話へ

戻る

VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部