変形魔方陣
下図のように、14個の○を含む図形がある。○には、1〜14の数字が、1つずつ入るも
のとする。ただし、一直線上の4つの○の数字の和は、一定とする。どのように入れたらい
いだろうか?
(答) 1つの答として、右下図のような場合が考えられる。ただ、答が1つだけという確信が
もてない。別な場合を発見された方、こちらまでメール下さい。
(参考文献:篠原正典 著 逆転の発想で IT を有効活用する
― Cambridge University Millennium Mathematics project
より―
(啓林 高数編 No.326) (啓林館))
(追記) 題意より、14個の数は、それぞれ2本の直線上にあるので、各直線上の4つの数
の和は、30に等しい。実際に、
(1+2+3+・・・+13+14)×2÷7=14×15÷7=30
上の解以外の解を見つけようとして、次のように考えた。
左図より、 A+B=30−b−g
B+C=30−a−c
C+D=30−b−d
D+E=30−c−e
E+F=30−d−f
F+G=30−e−g
G+A=30−a−f
という連立方程式において、未知数の個数が14で、式
の本数が7なので、この連立方程式の自由度は7である。
このとき、a、b、c、d、e、f、g を、1から14までの任意の数として、
残りの未知数は、
A=15−b+c−d+e−f
B=15−c+d−e+f−g
C=15−a−d+e−f+g
D=15+a−b−e+f−g
E=15−a+b−c−f+g
F=15+a−b+c−d−g
G=15−a+b−c+d−e
と表される。
上の解は、a=2、b=8、c=9、d=4、e=5、f=3、g=1 の場合で、このとき、
A=14、B=7、C=12、D=6、E=10、F=13、G=11
である。
したがって、a、b、c、d、e、f、g の値を、1から14まで任意に変化させて、
A、B、C、D、E、F、G の値を求め、そのうち、14個の文字
a、b、c、d、e、f、g、A、B、C、D、E、F、G
が全て異なる場合を探せば、上とは別な解が見つかりそうである。
徒然なるままに解を探したところ、次のような解が見つかった。やはり、解は、1通りでは
なかった。
この解は、上の解とは、ある意味で反転になっている。
上で述べた解の探求プログラムによって、確かに、
解は「見つかりそう・・・」なのであるが、大変な計算
が予想され、ちょっと計算の実行をためらっている
ところである。
実際に実行された方、メール下さい。
(再追記) その後、塾生たちの努力により、次の新しい解が発見されたので、報告したい。
左側は、塾生によるもの、右側は、その反転である。
塾生 T.K.君による解
塾生 Y.H.君による解
以上で、6個が発見された。もっと解がありそうだ!!
(再々追記)
2003年7月22日付けで、 「猫目石」さんという方から変形魔方陣についての情報をいた
だいた。(当HP掲示板)
七芒星の変形魔方陣の解を、コンピューターで虱潰してみた結果、144個の解が見つかりました。(左右反転解
や各セルを15から引いた解を除いていないので、オリジナルな解は多分36個です)
ちなみに、五芒星では解が存在せず、六芒星では160個の解が存在することも分かりました。
「猫目石」さんに感謝いたします。
(再々々追記) 大森清美 著 魔方陣 (冨山房)によれば、六芒星(6星陣)は、80個の
解を持ち、七芒星(7星陣)は、72個の解を持つとのことである。
上記6個の解に加えて、次の解が新しく追加された。分かっている解は、全部で、10個と
なった!
ホームページにて、自らの「魔方陣の研究」についての成果を公開している方がいらっしゃ
ることを、数理パズル入門の未菜実さんに教わりました!
論文集:『魔方陣の研究』 摂田 寛二
ありとあらゆる魔方陣が研究されていて、読むものを圧倒します。是非、皆さんも、お立ち
寄り下さい。
(再々々々追記)
(追記)で述べた解の探求プログラムについて、表計算ソフトExcelのVBAを利用して考えて
みた。興味ある方は、下記をコピーして試してみてください。ただ、下記のプログラムは未完成
で、まだ無駄な計算を含むものである。a、b の値を一つずつ決めて、残りの変数全てを繰り返
すのに、何と(?)、3時間半ぐらいかかるようだ!もうしばらく、検討が必要です...。
Sub 変形魔方陣()
Dim a, b, c, d, e, f, g, h As Integer
Range("a2").Select
For a = 1 To 14
For b = 1 To 14
For c = 1 To 14
For d = 1 To 14
For e = 1 To 14
For f = 1 To 14
For g = 1 To 14
With ActiveCell
.Value = 15 - b + c - d + e - f
.Offset(0, 1).Value = 15 - c + d - e + f - g
.Offset(0, 2).Value = 15 - a - d + e - f + g
.Offset(0, 3).Value = 15 + a - b - e + f - g
.Offset(0, 4).Value = 15 - a + b - c - f + g
.Offset(0, 5).Value = 15 + a - b + c - d - g
.Offset(0, 6).Value = 15 - a + b - c + d - e
.Offset(0, 10).Value = a
.Offset(0, 11).Value = b
.Offset(0, 12).Value = c
.Offset(0, 13).Value = d
.Offset(0, 14).Value = e
.Offset(0, 15).Value = f
.Offset(0, 16).Value = g
.Offset(0, 7).Value = "=MAX(RC[-7]:RC[-1],RC[+3]:RC[+9])"
.Offset(0, 8).Value = "=Min(RC[-8]:RC[-2],RC[+2]:RC[+8])"
.Offset(0, 9).Value = "=SUM(RC[-9]:RC[-3],RC[+1]:RC[+7])"
h = (15 - b + c - d + e - f) ^ 2 + (15 - c + d - e + f - g)
^ 2 + (15 - a - d + e - f + g) ^ 2 _
+ (15 + a - b - e + f - g) ^ 2 + (15 - a + b - c - f +
g) ^ 2 + (15 + a - b + c - d - g) ^ 2 _
+ (15 - a + b - c + d - e) ^ 2 + a ^ 2 + b ^ 2 + c ^ 2
+ d ^ 2 + e ^ 2 + f ^ 2 + g ^ 2
If .Offset(0, 7).Value = 14 And .Offset(0, 8).Value = 1 And .Offset(0,
9).Value = 105 And h = 1015 Then
.Offset(1, 0).Select
Else
.Offset(0, 0).Select
End If
End With
Next g, f, e, d, c, b, a
End Sub
もっと、こうした方がいいよ!というアイデアをお持ちの方、こちらまでメールをお願いします。
(再々々々々追記) 上のプログラムを、a=1、b=2 の場合について実行してみた。
出力の結果は次の通りである。(解のみ抜粋!!)
上の表から、次のような新しい解が、12個発見された。
以上から、分かっている解は、全部で、22個となった!
(顛末記) 表計算ソフトExcelのVBAを利用して解を求めるために、解の探求プログラムに
従って、上記のようにマクロを組んでみましたが、あまりの遅さに閉口でした。それ
でも、プログラムを多少修正して、a=1 を固定して、b〜g の値を 2〜14 まで変
化させるのに、試算で36時間程度でできる目途がたったので、早速日曜日の早
朝から、月曜日の深夜まで我が家のデスクトップパソコンをぶっ続けで稼動させま
した。 a の値を 2〜14まで変化させる必要もありますが、ちょっと挫折しました。
知り合いの電子制御が専門の方に伺うと、「for〜next文」を7個も使うのは無謀
だとのことでした。アルゴリズムそのものを変えた方がよいとも言われました。
確かにその通りですね!もう少し、プログラムを工夫しないと、パソコンのよさが
発揮できないですね。今後の研究としたいと思います。
この問題に、猫目石さんが取り組まれて、わずか「4.453秒」で「解は、72通り」
という結果を出されました。「スゴイ!!」の一語に尽きます。
私の方は、36時間パソコンに鞭打って頑張らせたのですが、解は「58通り」しか
得ることができませんでした。残りの14通りは、a の値が 1
以外の場合です。
参考までに、こちらのページに計算結果をまとめておきます。猫目石さんの解か
らの補充もあわせて、計72通りの解を提示したいと思います。