第7講 繰り返し処理・if文・配列を総動員して3次魔方陣を自動生成する!
第1話 魔方陣って何?
魔方陣って何でしょうか。
次の表をご覧ください。
8 | 1 | 6 |
3 | 5 | 7 |
4 | 9 | 2 |
このように正方形になっているとき、方陣といいます。
この方陣をよく観察してみてください。
どうなってます。
そうです。
横の合計がすべて15です。
そして、縦の合計もすべて15です。
それだけでしょうか。
お気づきですよね。
対角線の合計も15です。
方陣において、
横の合計・縦の合計・対角線の合計のすべてが等しいとき、
その方陣を魔方陣といいます。
魔方陣は、紀元前何千年も前から西洋や中国などで研究されてきました。
宗教的な意味合いを魔方陣に読み取った人もいれば、
趣味としてパズルとして研究してきた人もいます。
1辺が3の魔方陣を3次魔方陣といいます。
1辺が4なら4次魔方陣、5なら5次魔方陣、6なら6次魔方陣、・・・というわけです。
1 | 6 | 11 | 16 |
15 | 12 | 5 | 2 |
8 | 3 | 14 | 9 |
10 | 13 | 4 | 7 |
4次魔方陣
1 | 7 | 13 | 19 | 25 |
18 | 24 | 5 | 6 | 12 |
10 | 11 | 17 | 23 | 4 |
22 | 3 | 9 | 15 | 16 |
14 | 20 | 21 | 2 | 8 |
5次魔方陣
7 | 23 | 37 | 64 | 33 | 57 | 25 | 14 |
3 | 55 | 44 | 18 | 50 | 6 | 21 | 63 |
61 | 27 | 30 | 26 | 60 | 1 | 31 | 24 |
46 | 36 | 12 | 17 | 15 | 38 | 34 | 62 |
19 | 51 | 22 | 53 | 28 | 16 | 29 | 42 |
35 | 9 | 59 | 20 | 56 | 39 | 32 | 10 |
40 | 48 | 4 | 54 | 13 | 58 | 41 | 2 |
49 | 11 | 52 | 8 | 5 | 45 | 47 | 43 |
8次魔方陣
回転したり、左右や上下を逆にするしたりすると、
重なるものは、同一のものとすると、
3次魔方陣は答えは一つしかありません。
しかし、4次魔方陣になると880個
5次魔方陣になると約3億個解答があります。
6次魔方陣以上については、解答がいくつ存在するかは、
現在においてはわかっていません。
おそらく、6次魔方陣の段階で兆のレベルどころか
京(1兆の1万倍)のレベル以上解答は存在するでしょうし、
100次ぐらいになると桁数は想像を絶するものになるでしょう。
全宇宙に存在する原子の数を遙かに圧倒するのは間違いありません。
100年後の夢のコンピュータでも20次段階で全く歯が立たないのです。
私がVBAやC++などで作成した魔方陣生成プログラムは、
すべての魔方陣を作り出します。
最速プログラムなら、6次魔方陣を1秒で2,3万個の勢いで生産します。
でもこのプログラムを数千年作動させ続けたとしても、
6次魔方陣がいくつ存在するのかの問いに答えることはできません。
6次魔方陣の段階で、スーパコンピュータでも歯が立たないのです。
量子コンピュータや生物コンピュータが開発されて計算速度が、
現在のスパコンの数兆倍から数千京倍の計算速度になったとしても、
20次魔方陣ぐらいの段階で寄せ付けもしないでしょう。
量子コンピュータによって、現在の最速のスーパコンピュータ(スパコン)の
「京×京×京×京×京」倍速の夢のコンピュータが開発されたとしても、
100次だと全く歯が立たないでしょうね。
魔方陣をコンピュータに作らせる!
これはとっても面白い課題です。
そして、デジタルであるコンピュータに向いています。
整数しか使わないからです。
プログラムのできの善し悪しで、
スピードは天と地ほど変わります。
最初に、6次魔方陣を作成するのに成功したプログラムは、
1個作り出すのに、パソコンで3日も要しました。
夏の暑い日に、
コンピュータが壊れてしまうのではないかと心配しながら、
3日3晩をコンピュータに計算させ続けて、
6次魔方陣1個が画面に表示されているのをみたときの感動は、
今でも忘れることは出来ません。
しかし、先に述べた通り最速プログラムなら、
1秒で数万個の勢いで生成してしまいます。
できの悪いプログラムであれば、
スパコンで10時間かけても1個も作成できないのに対して、
優秀なプログラムならパソコンで1秒あたり何十万個も作らせることも可能なのです。
プログラミングの腕を鍛えて行くには、
魔方陣はうってつけの課題といえるでしょう。
尚、魔方陣については魔方陣のページを参照してください。
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
vba 2013 2010 2007 入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門第1部へ
本サイトトップへ