第6講 数独を作ろう!
第4話 数独解答例
プログラムソースは
Sub sakusei(g As Integer)
Dim i, j, k, l, hh, wa As Integer
j = g Mod n * n
i = Int(g / (n * n))
For k = 1 To n * n
mah(i, j) = k
If j > 0 Then
For l = 0 To j - 1
If mah(i, l) = mah(i, j) Then GoTo owari
Next
End If
If i > 0 Then
For l = 0 To i - 1
If mah(l, j) = mah(i, j) Then GoTo owari
Next
End If
ia = i Mod n
ja = j Mod n
If ia > 0 Then
For l = 0 To ia - 1
For m = 0 To n - 1
If (j - ja + m) <> j And (i - ia + l) <>
i Then
If mah(i, j) = mah(i - ia + l, j - ja + m) Then
GoTo owari
End If
Next
Next
End If
If g + 1 < n * n * n * n Then
sakusei (g + 1)
Else
cn = cn + 1
hyouji
End If
owari:
Next
mah(i, j) = 0
End Sub
です。
今回の目玉はピンクの部分です。
解説は次話で。
また、第6話では数独解答例をさらに改良し、
小さな正方形がわかるように
ブロックとブロックの間に線を挿入することを考えます。
第3話へ 第5話へ
VB入門講義応用編トップへ
VB入門講義トップへ