第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で逆対応をさせて、番号に座標を割り振ります。
さあ、皆さん考えてみましょう。



第1話へ 第3話へ

004
  


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

数学研究室に戻る