"BOKU"のITな日常

BOKUが勉強したり、考えたことを頭の整理を兼ねてまとめてます。

魔法陣をといてみた。EXCELで検算用のシートを作ると楽でした/EXCELの小ネタ

f:id:arakan_no_boku:20190201221826j:plain

目次

魔法陣とは

魔法陣はざっくりいうと「N✕Nの正方陣に、1~Nの数字を埋めて、縦横斜めの数字の和をすべて同じにする」ものです。 

きっかけになったパズルの本に書いてあったのは、3✕3の魔法陣だけのですが、せっかくなので、Nを、3から7までやってみます。

検算はEXCELでやってみる

魔法陣でめんどくさいのは、魔法陣が正しくできているかどうかの検算です。

縦横斜めの合計が一致していることを計算しないといけませんから。

そこで、魔法陣のワークをEXCELでやることにしました。

縦横斜めの数字の和をすべて同じにするみたいな計算はEXCELの得意技ですから。

こんな感じで枠をつくりました。

f:id:arakan_no_boku:20161224112325j:plain

やってみた結果はこんな感じです。

f:id:arakan_no_boku:20161224115418j:plain

魔法陣を解く解放は存在します。

でも、すべてに共通する・・ってのはなくて、ケースごとに存在します。

とりあえず、自分の知っているものだけ書いておきます。

魔法陣の解放(1)3✕3と、5✕5

3✕3と、5✕5は以下の解法を使いました。

1~4のルールにそって繰り返していくやり方です。

  1. 一番上の行の真ん中に1を置く。
  2. 右斜め上に連番をおいていく。
  3. もし、はみ出したら反対側の空マスに連番をおいていく
  4. 右斜め上にすでに数字があるか角の場合は下に連番を置く
魔法陣の解放(2)7✕7

7✕7も、同じやり方でできるかと思ったら、うまくいきませんでした。

試行錯誤の結果、以下のやり方でできました。

これが、一般的な解法かどうかはわかりませんが、一応紹介しておきます。

  1. 上から4段目、右から3番目に1を置く
  2. 右斜め上に連番をふっていく
  3. はみ出たら、反対の端におく
  4. ぶつかったら、一マス飛ばして右のマスにおく
  5. 右にはみ出たら反対側のマスを加えて1マスとばしにする
魔法陣の解放(3)4✕4

4✕4は本に書いてあった解法を参考にしました。

とてもシンプルで面白みはなかってですが。

  1. 左上から、1~順に数字をうめる。
  2. 数字を埋めたら、対角線上の数字を入れ替える。
6✕6の魔法陣の解法は・・よくわからない

6✕6は超苦労しました。

同じ偶数陣だから、4✕4と同じようにできるのかな?と思ったら全然できません。 

1~36の数字を6✕6のマス目に埋めるわけだから、縦横斜めの合計が111になるのは計算すればすぐわかるのですけど、なかなか。

ガチで3時間位悩みました。

多分、できたのは単なる偶然です。

2度とできる気はしません。 

解は概ね1800京通りあるそうなのですが、ピンときません。

どうも、他のパターンとちがって、6✕6の魔法陣には解法的なものはないみたいです。 

 魔法陣にはいろんな解き方があって、上記がすべてではありません。EXCELを使うと検算も楽で、昼休みとかの暇つぶしには結構楽しいパズルになります。

ではでは。

2018/11/27追記

>魔法陣を作成するpythonプログラムも作ってみました。

arakan-pgm-ai.hatenablog.com

>こっちなら、奇数次であれば11×11とか13×13みたいな大きいものもできます。