第1講 数字の規則的な配置
第6話 疑似疑似疑似数独(ナンプレ)作成ソフト
を実現するプログラム例
Private Sub CommandButton1_Click()
CommandButton2_Click
Dim m As Integer, n As Integer, h As Integer, i As Integer
Dim s As Integer, t As Integer
Dim a(8, 8) As Integer, p(8, 8) As Integer
Dim y(81) As Byte, x(81) As Byte
Dim hintosu As Byte
m = Cells(1, 2)
n = Cells(2, 2)
h = Cells(3, 2)
hintosu = Cells(3, 7)
For i = 0 To n * n - 1
s = Int(i / n)
t = i Mod n
a(s, t) = (h + i * m) Mod (n * n)
y(a(s, t)) = s
x(a(s, t)) = t
Next
If kensyou(a, n) = 1 Then
Cells(4, 2) = "すべての数字が網羅されています。"
Else
Cells(4, 2) = "一部の数字しか入っていません。"
End If
For i = 0 To hintosu - 1
p(y(i), x(i)) = Int(n * Rnd) + 1
Cells(5 + y(i), 2 + x(i)) = p(y(i), x(i))
Next
End Sub
Function kensyou(a() As Integer, n As Integer)
Dim b(81) As Byte, i As Integer, j As Integer
For i = 0 To n * n - 1
b(i) = 0
Next
For i = 0 To n - 1
For j = 0 To n - 1
b(a(i, j)) = 1
Next
Next
For i = 0 To n - 1
If b(i) = 0 Then
kensyou = 0
Exit Function
End If
Next
kensyou = 1
End Function
Private Sub CommandButton2_Click()
Rows("4:2000").Select
Selection.ClearContents
Range("A1").Select
End Sub
参考ダウンロード
添付ファイル
第6話のテーマ名に疑似が3つもついているのは、
まだ数独(ナンプレ)に遠いからです。
今回はそもそもヒントを配置する時点で数独(ナンプレ)のルールに反しています。
ですから、はじめから解は存在しないわけです。
ヒントをルール通りに配置しても、
数独(ナンプレ)の問題作成の道のりは、尚遠いわけです。
疑似を3つ外した時点で一応数独(ナンプレ)作成ソフトは完成します。
一応というのは、仮定法を使わなければ解けない問題も作ってしまうからです。
クオリティーを徐々に上げていって最終的には、仮定法を使わないで解ける問題のみを
作成できるようにもっていきます。
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入門へ
本サイトトップへ