第1講 数字の規則的な配置
第6話 疑似疑似疑似数独(ナンプレ)作成ソフト
t
を実現するプログラム例
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つ外した時点で一応数独(ナンプレ)作成ソフトは完成します。
一応というのは、仮定法を使わなければ解けない問題も作ってしまうからです。
クオリティーを徐々に上げていって最終的には、仮定法を使わないで解ける問題のみを
作成できるようにもっていきます。



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