第7講 一般種法による魔方陣作成
第1話 一般種法の説明
残確定法によって、魔方陣はかなり高速に作れるようになりました。
しかし、7次魔方陣ぐらいがまだ限界です。
ここでは、私が一般種法と呼ぶ方法でさらなる高速化を図り、より高次の魔方陣ができるようにします。
一般種法とは何でしょうか。
詳しくは、小学生・中学生のための魔方陣授業(初歩から最新研究まで)の第3回 魔方陣の一般的作成方法、第4回 種を合成する際の注意点
を参照して頂きたいと思いますが、ここでも簡単に説明しておきましょう。
まず、私が魔方陣の一般種と名付けているものを5次魔方陣の場合で例示しましょう。
1 | 3 | 5 | 5 | 1 |
4 | 1 | 4 | 2 | 4 |
3 | 4 | 3 | 2 | 3 |
2 | 4 | 2 | 5 | 2 |
5 | 3 | 1 | 1 | 5 |
これが私が魔方陣の一般種と名付けているものの1つです。
魔方陣の一般種とは、5次魔方陣の場合1から5までの数字が
それぞれ5つずつで計25のセルに埋まっていて、
かつすべての行・列・対角線の合計が等しくなっているものです。
なぜ魔方陣の種(しゅ)と名付けるかというと
1 | 5 | 3 | 1 | 5 | * | 1 | 3 | 5 | 5 | 1 |
3 | 2 | 2 | 4 | 4 | * | 4 | 1 | 4 | 2 | 4 |
4 | 5 | 3 | 2 | 1 | * | 3 | 4 | 3 | 2 | 3 |
5 | 1 | 3 | 5 | 1 | * | 2 | 4 | 2 | 5 | 2 |
2 | 2 | 4 | 3 | 4 | * | 5 | 3 | 1 | 1 | 5 |
2つの表から魔方陣を作成することができるからです。
右側の表から1引いて5を掛けて、対応する左側のセルに加えると、
(例えばピンクなら4+5×(2−1)の計算)
1 | 15 | 23 | 21 | 5 |
18 | 2 | 17 | 9 | 19 |
14 | 20 | 13 | 7 | 11 |
10 | 16 | 8 | 25 | 6 |
22 | 12 | 4 | 3 | 24 |
のように5次魔方陣ができあがります。
ただし、任意の種を組み合わせることができる訳ではなく、
2つの種が互いに直行するという条件が必要です。
互いに直行するとは左側の表をx座標、右側の表をy座標と下組み合わせ
(1,1),(5,3),(3,5),・・・が重複なく25通り存在することです。
1 | 2 | 3 | 4 | 5 | |
1 | ○ | ○ | ○ | ○ | ○ |
2 | ○ | ○ | ○ | ○ | ○ |
3 | ○ | ○ | ○ | ○ | ○ |
4 | ○ | ○ | ○ | ○ | ○ |
5 | ○ | ○ | ○ | ○ | ○ |
つまり (1,1),(5,3),(3,5)などに碁石をおいていって
すべてに碁石が一個ずつおける状態が直交と言うことです。
なぜこの条件が必要かというと、
1つでも重複があると、
先の「右側の表から1引いて5を掛けて、対応する左側のセルに加える」
という計算を行った際に同じ数字ができてしまうからです。
魔方陣であるためには1から25までの数字が1つずつあるというのが魔方陣の基本的な条件の1つです。
その基本的な条件を満たさなくなってしまいます。
そこでこれからプログラムを考えていく際の問題が2つあることになります。
1つは、いかにして一般種を作るのかという問題です。
もう一つは、2番目の種を作る際に如何にして直交という条件を確保するかと言うことです。
では皆さん、残確定法1を改良して一般種を作るプログラムを考えてみましょう。