奇数×奇数の魔方陣
十進BASIC_パズル&クイズ へ戻る
大学生のための数学 へ戻る
2013.09.17


  奇数×奇数の魔方陣を得るプログラムは、 学生のための数学 > その他の数学 > 魔方陣 でご紹介したものが一般的ですが、 その他にもあります。

9行9列の魔方陣 :

    47 58 69 80  1 12 23 34 45
    57 68 79  9 11 22 33 44 46
    67 78  8 10 21 32 43 54 56
    77  7 18 20 31 42 53 55 66
     6 17 19 30 41 52 63 65 76
    16 27 29 40 51 62 64 75  5
    26 28 39 50 61 72 74  4 15
    36 38 49 60 71 73  3 14 25
    37 48 59 70 81  2 13 24 35


9で割った商をとる ( ただし、 余りは9までとする ):

    5 6 7 8 0 1 2 3 4
    6 7 8 0 1 2 3 4 5
    7 8 0 1 2 3 4 5 6
    8 0 1 2 3 4 5 6 7
    0 1 2 3 4 5 6 7 8
    1 2 3 4 5 6 7 8 0
    2 3 4 5 6 7 8 0 1
    3 4 5 6 7 8 0 1 2
    4 5 6 7 8 0 1 2 3


その余り :

    2 4 6 8 1 3 5 7 9
    3 5 7 9 2 4 6 8 1
    4 6 8 1 3 5 7 9 2
    5 7 9 2 4 6 8 1 3
    6 8 1 3 5 7 9 2 4
    7 9 2 4 6 8 1 3 5
    8 1 3 5 7 9 2 4 6
    9 2 4 6 8 1 3 5 7
    1 3 5 7 9 2 4 6 8



5行5列の魔方陣 :
    17 24  1  8 15
    23  5  7 14 16
    4  6 13 20 22
    10 12 19 21 3
    11 18 25  2  9


商行列 :
    3 4 0 1 2
    4 0 1 2 3
    0 1 2 3 4
    1 2 3 4 0
    2 3 4 0 1


余り行列 :
    2 4 1 3 5
    3 5 2 4 1
    4 1 3 5 2
    5 2 4 1 3
    1 3 5 2 4



  商行列 と 余り行列 の数字の並び方に法則があります。 この法則性を用いることによって、 十進BASIC で、 9行9列までの奇数行列を得るプログラム作ることができます。

奇数×奇数の魔方陣を求めるプログラムは、 この他にもあります。

  5行5列の魔方陣を0行0列からの行列に変更して、 1 から順にその数の存在する住所を書き出しますと、 次のようになります。

   1:( 2,3 )
   2:( 3,4 )
   3:( 4,0 )
   4:( 0,1 )
   5:( 1,2 )
   6:( 1,4 )
   7:( 2,0 )
   8:( 3,1 )
   9:( 4,2 )
   10:( 0,3 )
   11:( 0,0 )
   12:( 1,1 )
   13:( 2,2 )
   14:( 3,3 )
   15:( 4,4 )
   16:( 4,1 )
   17:( 0,2 )
   18:( 1,3 )
   19:( 2,4 )
   20:( 3,0 )
   21:( 3,2 )
   22:( 4,3 )
   23:( 0,4 )
   24:( 1,0 )
   25:( 2,1 )

行の順列は、 2 3 4 0 1 1 2 3  ・ ・ ・ ・
列の順列は、 3 4 0 1 2 4 0 1  ・ ・ ・ ・

  行の順列の1番目から5番目までは、7.5 から初めて1づつ加えながら、5で割った余りを、小点数以下で切り上げたものになっています。
  行の順列の6番目から10番目までは、6.5 から初めて1づつ加えながら、5で割った余りを、小点数以下で切り上げたものになっています。
  行の順列11番目から15番目までは、5.5 から初めて1づつ加えながら、5で割った余りを、小点数以下で切り上げたものになっています。

  列の順列の1番目から5番目までは、2.5 から初めて1づつ加えながら、5で割った余りを、小点数以下で切り下げたものになっています。
  列の順列の6番目から10番目までは、3.5 から初めて1づつ加えながら、5で割った余りを、小点数以下で切り下げたものになっています。
  列の順列の11番目から15番目までは、4.5 から初めて1づつ加えながら、5で割った余りを、小点数以下で切り下げたものになっています。

  この法則性を用いることにより、 十進BASIC で、 奇数×奇数の魔方陣を得るプログラム作ることができます。
  このプログラムが出力する5×5以上の魔方陣は、 一般的なプログラムによる魔方陣とは異なります。
  なお、 このプログラムソースは、 Hidekazu Ito さんのホームページ 「 C言語辞典 」
http://chaste.web.fc2.com/index.html よりいただきました。