今回は、Javaを使って4行4列の16マスの魔方陣(1~16の数字を1つずつ使ったもの)をランダムで生成するコードを作成してみたいと思います。
魔方陣の概要
皆さんは「魔方陣」と言われるものをご存知でしょうか?魔方陣とは、以下のような縦・横・斜めの全ての列の合計が同じになる数表のことをいいます。今回は1~16の数字を一つずつ使ったものを作っていきます。下に魔方陣の一例を示します。
$$
\large\begin{array}{|c|c|c|c|}
\hline
1 & 14 & 15 & 4 \\
\hline
8 & 11 & 10 & 5 \\
\hline
12 & 7 & 6 & 9 \\
\hline
13 & 2 & 3 & 16 \\
\hline
\end{array}
$$
画像の魔方陣では、縦・横・斜めのどの列も合計が34になっていることが分かります。この性質を利用して、段階を踏みながらこのような表を出力してみます。
魔方陣の性質を利用して生成してみる
『4次魔方陣を求めるプログラム | 大同大学』にあるアルゴリズムを参考にして、Javaで実装してみます。
魔方陣の性質を利用して順に数字を求めていくことで、比較的簡単に生成することができました。
今回は、Javaで16マス魔方陣を作成してみました。以上で記事を終わりにします。
関連記事