第13講 ベクタを利用して4次魔方陣を作ろう!
第1話 4次魔方陣と6次魔方陣の作り方
『第8講 for文・if文・配列・ポインタを総動員して3次魔方陣の自動生成に挑戦する!』
では、3次魔方陣の自動生成に挑戦しました。
これは、コンピュータが自ら思考して、
魔方陣をすべて発見するというものでした。
第13講と第14講で扱おうとしている魔方陣作成は、
コンピュータに発見させようとするものではなく、
4次魔方陣と6次魔方陣の作成規則の通りに、
コンピュータを動かさせて、
4次魔方陣と6次魔方陣を作成するというものです。
第13講で4次魔方陣を扱い、第14講で6次魔方陣を扱います。

実は、4次魔方陣と6次魔方陣には、
簡単な作り方があるのです。
c言語 c++ 入門 初心者 vc++ 使い方 プログラミング 基礎から応用まで
(私のはじめてのVC++入門講義)
において、作り方を説明していますのでそのまま引用します。

---以下引用---


4次魔方陣の方から説明しましょう。


まず、普通の自然配列を考えます。


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

この段階ですでに対角線の合計が34になっています。そして、


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

対角線のところを4次方陣の真ん中を中心にして点対称移動をしてみましょう。


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



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

そうすると不思議なことに、すべての横合計、縦合計が同じ34になっています。
つまり、4次魔方陣が完成してしまったわけです。

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

そして、


 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



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次魔方陣が完成します。


(これを不思議だと感じた方は、是非とも魔方陣をクリックしてすべてのページに目を通してください。
いまでこそ初心者のためのVisual Basic入門講義での訪問者が第1位になるようになりましたが
(そしておそらく初心者のためのVisual C++入門講義基礎編がまもなくそれに迫るでしょうが。)、
以前の本サイトの最大ヒット数を稼いだページは魔方陣でした。
本サイトは、魔方陣の研究から始まったのです。)


---以上引用---

この簡単な規則をコンピュータに教えて、
魔方陣を作成するわけですが、
結構難しいですよ。

ですが、ここまで講義を読んできた聡明な皆さんなら、
以下の話を読まなくても、
作成できるかも知れません。
是非、ご自分でも挑戦してから、
以下の講義を読んで頂ければと思います、
と言いたいところですが、
初心者の方は、おそらく次話を読まないと、
困難だと思われます。
それは、データの交換ということです。
つまり、
#include<iostream>
using namespace std;
void main(){
   int a,b;
   a=5;
   b=8;
   cout<<"a="<<a<<" "<<"b="<<b<<endl;
   ・・・
   ・・・
   ・・・
   cout<<"a="<<a<<" "<<"b="<<b<<endl;
   cout<<"プロジェクト終了"<<endl;
}
の実行結果が
a=5 b=8
a=8 b=5
プロジェクト終了

となるようなプログラムを考えるにはどうしたらよいでしょうか。
   ・・・
   ・・・
   ・・・
の内容を考えて下さい。

第12講第14話へ 第2話へ



a

eclipse c++ 入門講義第1部へ

魔方陣 数独で学ぶ V
BA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ