第3講 数独作成アプリVer.1開発その1
第2話 時間計測機能を加える
p
Private Sub CommandButton1_Click()
  Rnd (-1)
  Dim hj As Single
  hj = Timer
  Randomize hj
  CommandButton2_Click
  m = Cells(1, 2)
  n = Cells(2, 2)
  h = Cells(3, 2)
  rn = Int(Sqr(n))
  hintosu = Cells(3, 7)
  zlk '全体リスト構造解析プロシージャ
  zys '座標作成プロシージャ
  sds (0) '数独作成プロシージャ
'  If kensyou(a, n) = 1 Then
'    Cells(4, 2) = "すべての数字が網羅されています。"
'  Else
'    Cells(4, 2) = "一部の数字しか入っていません。"
'  End If
  '全体リスト構造解析表示プロシージャ 正しいことが確認できた際にはこれを外す。
  '全体リスト構造解析表示プロシージャを入れておくと処理にかなり時間を要する。
  'hyouji1
  Cells(6, 12) = "数独作成にかかった時間は"
  Cells(7, 12) = Timer - hj
  Cells(8, 12) = "秒です。"
  Range("A1").Select
End Sub

変更部分だけ掲載
参考ダウンロード添付ファイル


皆さん、
Sub sds(g As Integer) '数独作成プロシージャ
  Dim i As Byte, ii As Byte, iii As Byte
  ii = Int(Rnd * mx(y(g), x(g)))
  For i = 0 To mx(y(g), x(g))
    iii = (i + ii) Mod (mx(y(g), x(g)) + 1)
    p(y(g), x(g)) = rlst(y(g), x(g), iii)
    klk (g) '局所リスト構造解析プロシージャ
    If g + 1 < hintosu Then
      sds (g + 1)
      If cn = 1 Then Exit Sub
    Else
      hyouji '問題表示プロシージャ
      cn = cn + 1
      Exit Sub
    End If

  Next
  p(y(g), x(g)) = 0
End Sub
のピンク部分を改良すれば問題が解けるはずだとお思いになりませんか。
Sub sds(g As Integer) '数独作成プロシージャ
  Dim i As Byte, ii As Byte, iii As Byte
  ii = Int(Rnd * mx(y(g), x(g)))
  For i = 0 To mx(y(g), x(g))
    iii = (i + ii) Mod (mx(y(g), x(g)) + 1)
    p(y(g), x(g)) = rlst(y(g), x(g), iii)
    If klk(g) = 1 Then '局所リスト解析プロシージャ
      
If g + 1 < hintosu Then
        sds (g + 1)
        If cn = 1 Then Exit Sub
      Else
        If g + 1 < n * n Then
          sds (g + 1)
          If cn = 1 Then Exit Sub
        Else
          hyouji '問題表示プロシージャ
          cn = cn + 1
          Exit Sub
        End If
      End If

    End If
  Next
  p(y(g), x(g)) = 0
End Sub


ところが何回実験しても数独は表示されません。
第1話で語った大きな問題とは何でしょうか。
試行錯誤でやり直すときに問題が発生します。
どういうことでしょうか。


第1話へ 第3話へ
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入門へ
本サイトトップへ