第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入門講義トップへ