第16講 魔方陣作成の高速化(数万倍へ)
第2話 対角線優先番号付けはいかに可能か
0 | 1 | 2 | 3 | |
0 | 0 | 8 | 9 | 4 |
1 | 10 | 1 | 5 | 11 |
2 | 12 | 6 | 2 | 13 |
3 | 7 | 14 | 15 | 3 |
0 | 1 | 2 | 3 | 4 | |
0 | 0 | 9 | 10 | 11 | 5 |
1 | 12 | 1 | 13 | 6 | 14 |
2 | 15 | 16 | 2 | 17 | 18 |
3 | 19 | 7 | 20 | 3 | 21 |
4 | 8 | 22 | 23 | 24 | 4 |
どのようにしたら、上のような番号付けは可能でしょうか。
私が、サイト上にアップしていたVBA版はかなり複雑です。
ですが、読者の仮屋崎さんから天才的なアイディアがそれられました。
今回それを紹介しましょう。
まず、6次まで拡大されるので、
Dim mah(6, 6) As Byte, x(36) As Byte, y(36) As Byte
と配列の要素数を大きくしておきましょう。
そして、次に
Sub zhy()
・
End Sub
内に
Dim a(i,j) As Integer
を用意しておきます。
そして、
@ 各座標から番号へ
A 番号から各座標へ
とします。
@は、a(i,j)に番号を割り振るという意味です。
そして、Aで逆対応をさせて、番号に座標を割り振ります。
さあ、皆さん考えてみましょう。
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る