第4講 数独作成アプリVer.1開発その2
第6話 疑似数独作成ソフトVer.2完成!
を実現するプログラム例
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)
zys '座標作成プロシージャ
Do While 1
hj1 = Timer
zlk '全体リスト構造解析プロシージャ
sds (0) '数独作成プロシージャ
If cn = 1 Then Exit Do
Loop
' If kensyou(a, n) = 1 Then
' Cells(4, 2) = "すべての数字が網羅されています。"
' Else
' Cells(4, 2) = "一部の数字しか入っていません。"
' End If
'全体リスト構造解析表示プロシージャ 正しいことが確認できた際にはこれを外す。
'全体リスト構造解析表示プロシージャを入れておくと処理にかなり時間を要する。
'hyouji1
hyouji2
Cells(6, 12) = "数独作成にかかった時間は"
Cells(7, 12) = Timer - hj
Cells(8, 12) = "秒です。"
Range("A1").Select
End Sub
(修正部分だけ掲載)
参考ダウンロード添付ファイル
疑似数独作成ソフトが一応完成しました。
いよいよ疑似をとって数独作成アプリVer.1の作成にかかりましょう。
作成時間のことを考えなければ、
A 別解がない
の条件をクリアするには、次のコードの
Sub sds(g As Integer)
If Timer - hj1 > 0.1 Then Exit Sub
・
・
If g + 1 < hintosu Then
sds (g + 1)
If cn = 1 Then Exit Sub
Else
If g + 1 < n * n Then
nck (g + 1)
sds (g + 1)
If cn = 1 Then Exit Sub
Else
hyouji '問題表示プロシージャ
cn = cn + 1
Exit Sub
End If
End If
End If
hukugen (g)
If Timer - hj1 > 0.1 Then Exit Sub
Next
p(y(g), x(g)) = 0
End Sub
Function klk(g As Integer)
If Timer - hj1 > 0.1 Then
klk = 0
Exit Function
End If
・
・
If Timer - hj1 > 0.1 Then
klk = 0
Exit Function
End If
・
・
End Function
の色のついている部分だけいじれば可能です。
一見するとピンクの部分をIf cn > 1 Then Exit Subと変更すれば済みそうですが、
青もいじらなければなりません。
どうしてでしょうか。
ヒントは、処理を途中で強制的にやめさせたときのcnの値です。
では、皆さん考えて下さい。
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入門へ
本サイトトップへ