第23講 数独を解くソフトVer.1の制作
第1話 数独を解くソフトVer.0の制作
前講で、数独解答を作らせるプログラムを作成させました。
そのプログラムを使えば、数独問題など簡単に解けるでしょうか。
問題を取り込むのにはどうしたらよいでしょうか。

問題を取り込むので、ブロック境界線は消しておきます。
数独の問題では、罫線などでブロックがわかるようになっているからです。
入門
Sub f(g As Integer)
         ・
         ・
         ・
    If g + 1 < 81 Then
      f (g + 1)
    Else
      cna = cn Mod 9
      cns = Int(cn / 9)
      z = 0
      For j = 0 To 9
        If j Mod 3 = 0 Then
          For k = 0 To 12
            Cells(7 + 14 * cns + j + zy, 1 + 14 * cna + k) = "*"
          Next
          zy = zy + 1
        End If
        If j < 9 Then
          zx = 0
          For k = 0 To 9
            If k Mod 3 = 0 Then
              Cells(7 + 14 * cns + j + zy, 1 + 14 * cna + k + zx) = "*"
              zx = zx + 1
            End If
            If k < 9 Then Cells(7 + 14 * cns + j + zy, 1 + 14 * cna + k + zx) = m(j, k)
          Next
        End If
      Next

         ・
         ・
         ・ 

ピンクの部分を
      For j = 0 To 8
        For k = 0 To 8
          Cells(7 + 10 * cns + j, 1 + 10 * cna + k) = m(j, k)
        Next
      Next

と変更すればブロック境界線は消えます。

問題を取り込みには、
Sub dainyuu()
  Dim i As Byte, j As Byte
  For i = 0 To 8
    For j = 0 To 8
      m(i, j) = Cells(3 + i, 2 + j)
    Next
  Next
  For i = 0 To 8
    For j = 0 To 8
      If m(i, j) < 1 Then
        m(i, j) = 0
      End If
    Next
  Next
End Sub

というプロシージャを作れば取り込むことができます。
取り込んで問題を解かせるにはどうしたらよいでしょうか。



第22講第6話へ 第2話へ

004
  

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

数学研究室に戻る