第8講 多次元ループ=多次元For文の学習
第13話 3次魔方陣自動生成ソフトの完成
を実現するプログラム例
Private Sub CommandButton1_Click()
CommandButton2_Click
f '9順列作成プロシージャ
End Sub
Sub f()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim o As Integer, p As Integer, q As Integer
Dim r As Integer
Dim cn As Long
Dim a(9) As Integer
cn = 0
For i = 1 To 9
a(0) = i
For j = 1 To 9
If j <> a(0) Then
a(1) = j
For k = 1 To 9
If k <> a(0) And k <> a(1) Then
a(2) = k
For l = 1 To 9
If l <> a(0) And l <> a(1) And l <> a(2) Then
a(3) = l
For m = 1 To 9
If m <> a(0) And m <> a(1) And m <> a(2) And m <> a(3) Then
a(4) = m
For n = 1 To 9
For o = 0 To 4
If n = a(o) Then GoTo tobi1
Next
a(5) = n
For o = 1 To 9
For p = 0 To 5
If o = a(p) Then GoTo tobi2
Next
a(6) = o
For p = 1 To 9
For q = 0 To 6
If p = a(q) Then GoTo tobi3
Next
a(7) = p
For q = 1 To 9
For r = 0 To 7
If q = a(r) Then GoTo tobi4
Next
a(8) = q
Call g(cn, a())
tobi4:
Next
tobi3:
Next
tobi2:
Next
tobi1:
Next
End If
Next
End If
Next
End If
Next
End If
Next
Next
End Sub
Sub g(cn As Long, a() As Integer)
Dim i As Integer, s As Integer, am As Integer, w As Integer
If (a(0) + a(1) + a(2)) <> 15 Then Exit Sub
If (a(3) + a(4) + a(5)) <> 15 Then Exit Sub
If (a(6) + a(7) + a(8)) <> 15 Then Exit Sub
If (a(0) + a(3) + a(6)) <> 15 Then Exit Sub
If (a(1) + a(4) + a(7)) <> 15 Then Exit Sub
If (a(2) + a(5) + a(8)) <> 15 Then Exit Sub
If (a(0) + a(4) + a(8)) <> 15 Then Exit Sub
If (a(2) + a(4) + a(6)) <> 15 Then Exit Sub
For i = 0 To 8
s = Int(i / 3)
am = i Mod 3
Cells(4 + s + 4 * Int(cn / 5), 1 + am + 4 * (cn Mod 5)) = a(i)
Next
cn = cn + 1
End Sub
Private Sub CommandButton2_Click()
Rows("4:20000").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
参考ダウンロード添付ファイル
本当は、まだ改良の余地がありますが、
第9講のサブプロシージャの再帰的使用で、
もう一度3次魔方陣生成ソフトを取り上げますので、
これにて第8講は終了とします。
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 入門へ第2部へ
小学生からエンジニアまでのRuby入門へ
小学生からエンジニアまでのC言語入門 基礎から応用まで
本サイトトップへ