第10講 プロシージャの再帰的使用による魔方陣の自動生成
第3話 n次准准魔方陣自動生成ソフト
n次准准魔方陣生成ソフトコード例
Module Module1

  Dim cn, x(25), n As Integer
  Sub Main() '私は社長だ。
    Console.WriteLine ("これはすべてのn次方陣を求めるソフトです。")
    Console.WriteLine ("何次の方陣を発生させるのかをnに入力し")
    Console.WriteLine ("エンターするとn次方陣がすべて生成されます。")
    Console.Write ("n=")
    n = Console.ReadLine()
    cn = 0
    f (0)
    Console.WriteLine("生成された{0:d}次方陣は{1:d}個です。", n, cn)
  End Sub

  Sub f(g As Integer)
    Dim i, j, k, h,
hh, w As Integer
    For i = 0 To n * n - 1
      If g = 0 Then x(g) = i + 1
      h = 1
      If g > 0 Then
        For j = 0 To g - 1
          If x(j) = i + 1 Then
            h = 0
            Exit For
          End If
        Next
        If h = 1 Then x(g) = i + 1
      End If
      If h = 1 Then
        If g + 1 < n * n Then
          f (g + 1)
        Else
          
hh = 1
          For j = 0 To n - 1
            w = 0
            For k = 0 To n - 1
              w += x(n * j + k)
            Next
            If w <> Int(n * (n * n + 1) / 2) Then
              hh = 0
              Exit For
            End If
          Next

          
If hh = 1 Then
            cn += 1
            For j = 0 To n - 1
              For k = 0 To n - 1
                Console.Write("{0:d} ", x(n * j + k))
              Next
              Console.WriteLine()
            Next
            Console.WriteLine()
          End If

        End If
      End If
    Next
  End Sub

End Module
実行結果例
これはすべてのn次准准魔方陣を求めるソフトです。
何次の准准魔方陣を発生させるのかをnに入力し
エンターするとn次准准魔方陣がすべて生成されます。
n=2
1 4
2 3

1 4
3 2

2 3
1 4

2 3
4 1

3 2
1 4

3 2
4 1

4 1
2 3

4 1
3 2

生成された2次准准魔方陣は8個です。


2次准准魔方陣は8個存在し、
3次准准魔方陣は2592個存在することがわかりました。

さて、列(縦)合計の条件を加えて、
准魔方陣生成ソフトに変更しましょう。
果たして2次准魔方陣は存在するのでしょうか。



第2話へ   第4話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc** c言語 c** 入門 初心者 基礎から応用まで
eclipse c** 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C**入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC**による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ