第19講 対角線法による魔方陣自動生成ソフトの高速化
第3話 番号をどう入れる?

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

を実現するために、1引いた数と、

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

座標(表の)と座標(表の)の対応付けを考えます。
表の各数字から1を引いた理由は、
表の番号がgに対応するからです。
冒頭に、
Dim a(10, 10) As Byte, n As Byte, cn As Long,
y(100) As Byte, x(100) As Byte
というグローバル配列を用意して、
例えば、y(16) = 2 x(
16) = 1
等と関連づけられば、

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

の順に数字を入れることは実現できます。
そのためには、配列
  Dim b(10, 10) As Byte
を用意して、

0 9 10 11 5
12 1 13 6 14
15 16 2 17 18
19 7 20 3 21
8 22 23 24 4

白い数字を入れてから、

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

その白い数字と座標(表の)と座標(表の)が関連づけられればよいのです。

まず、

0 9 10 11 5
12 1 13 6 14
15 16 2 17 18
19 7 20 3 21
8 22 23 24 4

を実現しましょう。
Dim a(10, 10) As Byte, n As Byte, cn As Long, y(100) As Byte, x(100) As Byte
Private Sub CommandButton1_Click()

  CommandButton2_Click
  cn = 0
  n = Cells(4, 2)
  Call zy
  'Call f(0) 'n次魔方陣作成プロシージャ
End Sub

Sub zy()

  Dim i As Byte, j As Byte, k As Byte
  Dim b(10, 10) As Byte
     ・・・
     ・・・
     ・・・
  
End Sub
参考ダウンロード添付ファイル
・・・が空白になっていますので、
皆さん、コードを考えて下さい。





第2話へ 第4話へ
004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ
小学生からエンジニアまでのRuby入門へ
本サイトトップへ