2010年9月17日 星期五

'魔術矩陣

'魔術矩陣
' 68  81  94 107 120   1  14  27  40  53  66
' 80  93 106 119  11  13  26  39  52  65  67
' 92 105 118  10  12  25  38  51  64  77  79
'104 117   9  22  24  37  50  63  76  78  91
'116   8  21  23  36  49  62  75  88  90 103
'  7  20  33  35  48  61  74  87  89 102 115
' 19  32  34  47  60  73  86  99 101 114   6
' 31  44  46  59  72  85  98 100 113   5  18
' 43  45  58  71  84  97 110 112   4  17  30
' 55  57  70  83  96 109 111   3  16  29  42
' 56  69  82  95 108 121   2  15  28  41  54
Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim str1 = ""
        Dim m = 11
        Dim a(m - 1, m - 1)
        For i = 0 To m - 1
            For j = 0 To m - 1
                a(i, j) = 0
            Next
        Next
        Dim x = m \ 2, y = 0
        Dim k = 1
        a(x, y) = k
        k = k + 1
        While k <= m * m
            Dim xb = x
            Dim yb = y
            x = (x + 1) Mod m
            y = (y - 1 + m) Mod m
            If a(x, y) = 0 Then
                a(x, y) = k
                k = k + 1
            Else
                x = xb
                y = yb
                y = (y + 1) Mod m
                a(x, y) = k
                k = k + 1
            End If
        End While
        For y = 0 To m - 1
            For x = 0 To m - 1
                'str1 = str1 & a(x, y) & vbTab
                str1 = str1 & format1(a(x, y)) & vbTab
            Next
            str1 = str1 & vbNewLine
        Next
        MsgBox(str1)
        My.Computer.FileSystem.WriteAllText(Application.StartupPath & "\Test.txt", str1, False)
        End
    End Sub
    Function format1(ByVal n)
        If n < 10 Then Return Space(2) & n
        If n < 100 Then Return Space(1) & n
        Return n
    End Function
End Class

沒有留言: