第18講 一般種法×末項確定法(魔方陣作成マクロVer.4)への挑戦

第4話 番号付けコード例解説その1
まず、1行1行の解説に入る前に今回のコードの核心部分を最初に示しておきましょう。
Sub zhy2(g As Byte)
  Dim i As Byte
  Dim j As Byte
  For i = g + 1 To n - 1
    If a(i, g) = -1 Then
      a(i, g) = gk
      gk = gk + 1
    End If
  Next
  If g + 1 < n Then
    zhy1 (g + 1)
    If tm = 1 Then Exit Sub
  Else
    For i = 0 To n - 1
      For j = 0 To n - 1
        y(a(i, j)) = i
        x(a(i, j)) = j
      Next
    Next

    
tm = 1
    Exit Sub
  End If
End Sub

紺色の部分がこのプログラムの一番枢要な点です。
最初に番号付けを行い、その逆対応で座標を決めようとしています。

0 1 2 3
0 0 8 9 4
1 10 1 5 12
2 11 6 2 14
3 7 13 15 3



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





















(紺はy、赤はxに、ピンクはiに対応)
つまり、上の表のピンクがa(i, j)に対応し、濃紺がy座標に、赤がx座標に対応します。
プログラムでは、最初にピンクを作りその番号をy座標とx座標に対応させています。
        y(a(i, j)) = i
        
x(a(i, j)) = j
が番号と座標との逆対応をさせています。
これは数学でいえば逆関数です。




第3話へ 第5話へ

004
  

VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る