第8講 4次魔方陣と6次魔方陣の作成
第9話 6次魔方陣コード解説その3(上下線対称移動)
次に、
'上下対称移動
For i = 0 To m - 1
w = a(i, (i + 1) Mod 3)
a(i, (i + 1) Mod 3) = a(n - 1 - i, (i + 1) Mod 3)
a(n - 1 - i, (i + 1) Mod 3) = w
Next
の部分を見ていきましょう。
(i + 1) Mod 3 は(i+1)を3で割ったときの余りを計算するものです。
したがって、
i=0のとき、(i + 1) Mod 3=(0 + 1) Mod 3=1
i=1のとき、(i + 1) Mod 3=(1 + 1) Mod 3=2
i=2のとき、(i + 1) Mod 3=(2 + 1) Mod 3=0
と動いていきますので、a(i, (i + 1) Mod 3)は
i=0とのき、a(i, (i + 1) Mod 3)=a(0, 1)
i=1とのき、a(i, (i + 1) Mod 3)=a(1, 2)
i=2とのき、a(i, (i + 1) Mod 3)=a(2, 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 |
2,9,13が対象となります。
a(n - 1 - i, (i + 1) Mod 3)は何でしょうか。
i=0とのき、a(i, n - 1 - i)=a(n - 1 - i, (i + 1) Mod 3)=a(6 - 1 - 0, (0 + 1) Mod 3)=a(5, 1)
i=1とのき、a(i, n - 1 - i)=a(n - 1 - i, (i + 1) Mod 3)=a(6 - 1 - 1, (1 + 1) Mod 3)=a(4, 2)
i=2とのき、a(i, n - 1 - i)=a(n - 1 - i, (i + 1) Mod 3)=a(6 - 1 - 2, (2 + 1) Mod 3)=a(3, 0)なので、
a(n - 1 - i, (i + 1) Mod 3)によって
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 |
32,27,19が対象とされます。
結局、
'上下対称移動
For i = 0 To m - 1
w = a(i, (i + 1) Mod 3)
a(i, (i + 1) Mod 3) = a(n - 1 - i, (i + 1) Mod 3)
a(n - 1 - i, (i + 1) Mod 3) = w
Next
によって、
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 |
薄緑(2,32),(9,27),(13,19)が交換されます。
第8話へ 第10話へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る