"BOKU"のITな日常

還暦越えの文系システムエンジニアの”BOKU”は新しいことが大好きです。

EXCELで縦横斜めの検算をしながら魔法陣をといてみた/EXCELの小ネタ

EXCELで魔法陣を遊んでみたら意外に楽しかったという話です。

f:id:arakan_no_boku:20190201221826j:plain

 

 

魔法陣を解くベースをEXCELで作る

 

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

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

 

EXCELで魔法陣のベースを作る

 

この縦横斜めの数字の和をすべて同じにする部分の計算はEXCELの得意技です。

なので、EXCELで空白の枠を作ってやってみました。 

 

f:id:arakan_no_boku:20161224112325j:plain

この、正方陣の外に0が表示されている部分には縦計・横計・斜め計を計算するためのSUM関数を埋め込んでます。 

これで数字を埋めながら考えていくわけです。

 

解いてみた結果

 

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

f:id:arakan_no_boku:20161224115418j:plain

3✕3と、5✕5の解法

 

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

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

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

 

7✕7の魔法陣の解法

 

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

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

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

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

 

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みたいな大きいものもできます。