第8講 4次魔方陣と6次魔方陣の作成
第8話 6次魔方陣コード解説その2(逆対角線移動)
次に、
'逆対角線移動
For i = 0 To m - 1
w = a(n - 1 - i, i)
a(n - 1 - i, i) = a(i, n - 1 - i)
a(i, n - 1 - i) = w
Next
のコードを見てみましょう。
n = 6、m = 3 であることに注意しながら読んでください。
For i = 0 To m - 1はFor i = 0 To 2 です。
a(n - 1 - i, i)は何を意味するでしょうか。
i=0とのき、a(n - 1 - i, i)=a(6 - 1 - 0, 0)=a(5, 0)
i=1とのき、a(n - 1 - i, i)=a(6 - 1 - 0, 0)=a(5, 0)
i=2とのき、a(n - 1 - i, i)=a(6 - 1 - 0, 0)=a(5, 0)
したがって、今回は
0 | 1 | 2 | 3 | 4 | 5 | |
0 | 1 | 2 | 3 | 4 | 5 | 6 |
1 | 7 | 8 | 9 | 10 | 11 | 12 |
2 | 13 | 14 | 15 | 16 | 17 | 18 |
3 | 19 | 20 | 21 | 22 | 23 | 24 |
4 | 25 | 26 | 27 | 28 | 29 | 30 |
5 | 31 | 32 | 33 | 34 | 35 | 36 |
の6,11,16です。
では、a(i, n - 1 - i)は何でしょうか。
i=0とのき、a(i, n - 1 - i)=a(0, 6 - 1 - 0)=a(0, 5)
i=1とのき、a(i, n - 1 - i)=a(1, 6 - 1 - 1)=a(1, 4)
i=2とのき、a(i, n - 1 - i)=a(2, 6 - 1 - 2)=a(0, 3)なので、a(i, n - 1 - i)は
0 | 1 | 2 | 3 | 4 | 5 | |
0 | 1 | 2 | 3 | 4 | 5 | 6 |
1 | 7 | 8 | 9 | 10 | 11 | 12 |
2 | 13 | 14 | 15 | 16 | 17 | 18 |
3 | 19 | 20 | 21 | 22 | 23 | 24 |
4 | 25 | 26 | 27 | 28 | 29 | 30 |
5 | 31 | 32 | 33 | 34 | 35 | 36 |
31,、26,21ということになります。
以上から
'逆対角線移動
For i = 0 To m - 1
w = a(n - 1 - i, i)
a(n - 1 - i, i) = a(i, n - 1 - i)
a(i, n - 1 - i) = w
Next
では、(6,31),(11,26),(16,21)の交換を行っていることがわかります。
再度確認しておきますが、
3 | 4 | 5 | |
0 | 4 | 5 | 6 |
1 | 10 | 11 | 12 |
2 | 16 | 17 | 18 |
も
0 | 1 | 2 | |
3 | 19 | 20 | 21 |
4 | 25 | 26 | 27 |
5 | 31 | 32 | 33 |
も
0 | 1 | 2 | |
0 | 1 | 2 | 3 |
1 | 7 | 8 | 9 |
2 | 13 | 14 | 15 |
を基にして作っています。
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る