第4講 数独作成アプリVer.1開発その2
第9話 数独作成アプリVer.1の完成!
コード変更部分
Private Sub CommandButton1_Click()
Rnd (-1)
Dim hj As Single
hj = Timer
Randomize hj
CommandButton2_Click
gzy '偶然要素を付け加えるプロシージャ=毎回異なる配置にるするためのプロシージャ
n = Cells(2, 2)
rn = Int(Sqr(n))
n2 = n * n
n_1 = n - 1
n2_1 = n2 - 1
hintosu = Cells(3, 7)
zys '座標作成プロシージャ
Do While 1
hj1 = Timer
zlk '全体リスト構造解析プロシージャ
y(0) = 0
x(0) = 0
Call sds(0, 0) '数独作成プロシージャ
sdc '数独のコピー
zlk '全体リスト構造解析プロシージャ
mds '問題作成プロシージャ
nck (hintosu)
Call sds(hintosu, 1) '数独作成プロシージャ
If cn = 1 Then Exit Do
Loop
' If kensyou(a, n) = 1 Then
' Cells(4, 2) = "すべての数字が網羅されています。"
' Else
' Cells(4, 2) = "一部の数字しか入っていません。"
' End If
'全体リスト構造解析表示プロシージャ 正しいことが確認できた際にはこれを外す。
'全体リスト構造解析表示プロシージャを入れておくと処理にかなり時間を要する。
' hyouji1
hyouji '問題表示プロシージャ
hyouji2
Cells(6, 12) = "数独作成にかかった時間は"
Cells(7, 12) = Timer - hj
Cells(8, 12) = "秒です。"
Range("A1").Select
End Sub
Sub gzy()
Dim s As Byte
s = Int(Rnd * 10)
If s = 0 Then m = 47
If s = 1 Then m = 29
If s = 2 Then m = 52
If s = 3 Then m = 11
If s = 4 Then m = 31
If s = 5 Then m = 43
If s = 6 Then m = 23
If s = 7 Then m = 7
If s = 8 Then m = 13
If s = 9 Then m = 19
h = Int(Rnd * 81)
End Sub
参考ダウンロード添付ファイル
If s = 0 Then m = 47
If s = 1 Then m = 29
If s = 2 Then m = 52
If s = 3 Then m = 11
If s = 4 Then m = 31
If s = 5 Then m = 43
If s = 6 Then m = 23
If s = 7 Then m = 7
If s = 8 Then m = 13
If s = 9 Then m = 19
の部分はちゃんとは実験してません。
もっと適切な値があるかも知れません。
手で数回実験して数独作成が比較的早いものを、
選びましたが、
本来は自動実験コードを組んで、
どの値のときに速いのかを実験しなければなりません。
皆さんは、是非自動実験コードを組んで最適な値を探して下さい。
試した範囲では、
ヒント数が多いときには、確定法で解ける問題を作っている場合が多いようです。
つまり、現時点で初心者用の数独生成アプリは開発にほぼ成功したといって良いでしょう。
ですが、ヒント数が多い場合には、
2つの大きな問題を抱えています。
1つ目は、作成に時間がかかりすぎということです。
30秒もかかったのでは話になりません。
ユーザの忍耐限度は10秒程度です。
ですから、数秒できれば1秒以内で出来るように改善していく必要があります。
2つ目は
仮定法を使わなければ解けない問題を作ってしまう確率が高いという課題を残こしてる、
ということです。
すぐに改善に取り組みたいでしょうが、第4部第5講では、
原因解明プログラムファイル
別解のあるなし検証プログラムファイル
実験用100題生成数度作成アプリ添付ファイル
数独の問題の適正を調べるプログラム添付ファイル
などにある玉手箱について解説します。
つまり、プログラムが正常に稼働しているかどうかを
調べる様々なアイテムについて解説します。
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入門へ
本サイトトップへ