第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話へ
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る