第8講 4次魔方陣と6次魔方陣の作成

第1話 魔方陣に関する思い出

このサイトは、最初『魔方陣の研究』として始まりました。
そして、それに『右脳数学』や『VC++講義』などを加えて現在の姿に
なりました。
『魔方陣の研究』を立ち上げる前は、まだネットのことをよく知らず、
世界中で魔方陣を研究しサイトを立ち上げるのは、私のサイトが最初だろうと勝手に思っていました。
ところが、『魔方陣の研究』をUPしてから、様々な検索サイトで『魔方陣』で検索すると、数十万ページもヒットするのには驚いたものです。
魔方陣を研究している人は、世界中にいてしかも多くの人が数千から数万
(検索サイトで数十万と出てもかなり重複があるので実際の数字は、だいたいこんなところではないでしょうか。)
もサイトを立ち上げているとは、驚異でした。
世界中には同じようなことを考える人が、結構いるもんだなと感心しました。

当時、300の検索サイトに登録しましたが、
最初『魔方陣の研究』は、どのサイトで『魔方陣』と検索しても100位にも入っていませんでした。


ところが...
そのころ、Googleが注目を集め出していました。
私の『魔方陣の研究』はGoogleにおいては、日に日にランクを上げていきました。
『魔方陣』で検索すると、200位ぐらい→80位ぐらい→20位ぐらいと、日を追って順位を上げていきました。
この勢いなら、『魔方陣の研究』が数ヶ月以内にトップになるのではと予感していたら、
なんと、10日もかからずトップに上り詰めたのです。
そして、5年間ぐらいはずっとトップの座にありました。
4,5年『魔方陣の研究』は更新していませんので、
現在は『魔方陣』で検索すると、6位ですが。

ついつい、思い出話をしてしまいまして、申し訳ありません。
前にもお話させていただきましたが、魔方陣や数独問題作成には、今でも大きな関心を寄せています。
したがいまして、この講義では題材を、しばしば魔方陣と数独から取り上げます。
魔方陣も数独も、整数だけから出来ていてコンピュータに何かをやらせるときは、
格好の材料です。
私は、魔方陣を研究していなければ、C言語にもパスカルにも手を出していなかったと思います。
そして、もちろんVC++やVB・VBAにも。
魔方陣をコンピュータに作らせるというアイデアにとらわれて、
最初に学習したのは、BASICでした。
しかし、BASICには2つの問題がありました。
T 構造化プログラミングが出来ない。
U インタプリタで、コンパイラでない。
Tはすでに説明しましたからお分かりでしょう。
インタプリタとコンパイラについて、説明しましょう。
皆さん、VBA(実質VB)でたくさんプログラミングしてきました。
そして、プログラムを走らせてきました。
(プログラムを実行することを、プログラムを走らせるといいます。)
ですが、実はコンピュータは、VBのコードを直接実行しているわけではありません。
VBやC言語等は、人間にはわかりやすいプログラム言語ですが、
コンピュータは、苦手です。
コンピュータは、0と1だけで処理を行っていますので、
コンピュータは、極言すると数字しか扱えないのです。
ですから、プログラムを走らせるときは、コードを数字だけで出来ている機械語に翻訳しなければなりません。
その翻訳の仕方が、2通りあるわけです。
インタプリタとコンパイルです。
インタプリタは、VBなどのコードを1行1行機械語に翻訳します。
1行翻訳して、その機械語の命令を実行し、また1行翻訳して、機械語の命令を実行するという手順で進みます。

それに対して、コンパイルとはすべてを機械語に翻訳してから、機械語の命令をコンピュータが実行します。
そして、コンパイルするもの=ソフトを、コンパイラというのです。
コンパイラがコンパイルして作ったファイルを実行ファイル(EXEファイル)といいます。

インタプリタとコンパイラではどちらが処理速度が速いかと申しますと、
もちろん、コンパイラです。
プログラムの内容によるでしょうが、私の実験では3倍から4倍は実行速度が違います。

C言語やパスカルは、構造化プログラミングが徹底したコンパイラでした。
したがって、プログラムの実行速度は、インタプリタのBASICより圧倒的に速いわけです。
『魔方陣の研究』を始めた頃の私のプログラムは、探索速度が現在の最速プログラムと比較すると、
1/100,000,000程度です。
したがって、BASICで処理できたのは、3次魔方陣・4次魔方陣・5次魔方陣のみでした。
6次以上の魔方陣を何とか作らせたいということで、より処理速度の速いC言語やパスカルの勉強を始めたのです。

おそらく多くの方は、「なぜ役にも立たない魔方陣なんて研究するの?」とお思いではないでしょうか。
つまらないこと、些細なことに思えてもそれを一生懸命研究すると、
自分でも思いもしない副産物がついてくるものです。
私の場合は、魔方陣の研究によってBASIC・C言語・パスカル・Quick Basic・Visual Basic・Visual C++を修得することが出来たのです。
そして、VC++講義は、VC++入門系ではGoogleでダントツのトップに君臨し続けています。
おそらく、やがてはこのVBA講義も、VBA入門系ではトップの位置につくようになるでしょう。
講義を始めて、3日目には『VBA 初歩』で4位に入っていたからです。

他人から見てつまらないように見えたことを、こだわって研究して数学を発展させた事例はたくさんあります。
有名なのは、今(2011/08/17)Googleの扉に使われているフェルマーの定理です。
フェルマーの予想を証明しようとして、多数の数学者が数世紀にわたって研究した結果、
様々な数学の新しい広大な領域が開拓されてきたのです。
フェルマーの予想は、ほぼ正しであろうということは、コンピュータ実験によってもわかっていましたしので、
証明自体より、証明しようとして新しい学問分野が開拓されていったということの方が、意義が大きいでしょう。

魔方陣の研究も、魔方陣を解くことより、解くために考え出されたプログラム手法の方に意義があります。
実際、私の数独問題作成ソフトVer7は、魔方陣を作成するときの方法を踏襲しています。
そして、作るつもりはありませんが、高校の先生方を悩ませている時間割作成ソフトも、
魔方陣作成の手法をそのまま使えば、制作可能です。
今の市販されている時間割作成ソフトは、非常に出来が悪く結局は手作業で何日も修正作業をやっていて、
はじめから手作業で作っているのと大して変わらないのが実態です。
市販ソフトは、条件をクリアした完全な時間割は作ることが出来ず、
5単位の教科なのに1日に2時間入ったり、同一の先生が同じ時間帯に3−1と1−4の両方に出なければならないなど、
最後まですべての条件(1日同じ教科が2時間あってはいけないとか、先生は1時間に出るクラスは1つでなければならないなどの条件)
をクリアできないのです。
魔方陣作成プログラムを応用すれば、完全なる時間割=可能な全条件をクリアした時間割を組むことも可能です。
しかも、おそらくコンピュータは、10分もかからず完全なる解を見つけてしまうでしょう。
何しろ私の作った最速のプログラムなら、26次魔方陣を1秒に数百という単位で答えを発見してしまうのですから。
26次魔方陣は、私の発見した偶数次魔方陣の作成方法を使わなければ、
先生方が、1年間合宿をされて缶詰作業で作成に努力されたとしても、おそらく1個も作れないでしょう。
人間が共同で1年間作業をしても、1個も発見できない解答をコンピュータは1秒で数百の単位で発見してしまうのです。
尚、念のために付け加えさせていただくなら、私の最速プログラムは偶数次魔方陣の作成方法を使っていません。
文字通り試行錯誤でコンピュータが自分で解答を発見してしまうのです。

ただ、VBAで開発するとなると少なくとも缶詰作業で半年はかかってしまうでしょう。
完全版なら、10万円でも学校の先生方は、買いますよ。
選択や習熟などが導入され、時間割作成が複雑で困難なものになっているのです。
学校によっては、5日ぐらい合宿をして組んでいるぐらいですから。
栃木県だけで高校は、100校程度あります。
さらに、時間割の大変さは中学校でもたいして変わらないでしょうから、
対象になる学校は、500校ぐらいでしょう。
全国になると、少なくともその50倍はあるでしょうから、
25、000校はあります。
その1割の学校が10万円でソフトを買ってくれたら、
2億5千万円の売上になります。
時間割作成完全版をつくれば、これは決して夢の数字ではありません。
どうか、この講義を続けてお読みになって、制作にチャレンジして下さい。
きっと、今VBAを学習している皆さんの中から、時間割作成完全版を完成する方がきっと出ることでしょう。


ごめんなさい。脱線で今話は終わってしまいました。
本当の予定は、4次と6次の魔方陣の作り方だったのですが、
それは次話で。


第7講第6話へ 第2話へ

004


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

数学研究室に戻る