第1講 数字の規則的な配置
第5話 数字を2次元に規則的に並べるプログラム例

k
を実現するアプリ例
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
  m = Cells(1, 2)
  n = Cells(2, 2)
  h = Cells(3, 2)
  For i = 0 To n * n - 1
    s = Int(i / n)
    t = i Mod n
    a(s, t) = (h + i * m) Mod (n * n)
    Cells(6 + s, 2 + t) = a(s, t)
  Next
  If kensyou(a, n) = 1 Then
    Cells(4, 2) = "すべての数字が網羅されています。"
  Else
    Cells(4, 2) = "一部の数字しか入っていません。"
  End If
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

参考ダウンロード添付ファイル


配列aは2次元にしなくても良かったのですが、
後の数独問題作成につなげるために2次元にしました。

第6話の課題です。
0 1 2 3 4 5 6 7 8
0 12 14 16 18 20 22 24 26 28
1 30 32 34 36 38 40 42 44 46
2 48 50 52 54 56 58 60 62 64
3 66 68 70 72 74 76 78 80 1
4 3 5 7 9 11 13 15 17 19
5 21 23 25 27 29 31 33 35 37
6 39 41 43 45 47 49 51 53 55
7 57 59 61 63 65 67 69 71 73
8 75 77 79 0 2 4 6 8 10


数字から逆対応させて、座標配列
y(g)とx(g)を作って下さい。
gが表の
ピンクに、
配列yは
、配列xはに対応させて、
y(
0)=8,x(0)=3
y(
1)=3,x(1)=8
y(2)=8,x(2)=4
y(
3)=4,x(3)=0
    ・
    ・
    ・
として、その座標配列を利用して
配列p(y(i),x(i))
(この第4部では配列p(i, j)を数独を収納する配列として講義を進めます。)
を用意して、その配列に1から9までの数字をランダムに選んで入れて、
一部を表示させることによって
t
あたかも数独の問題であるように表示させて下さい。
第1話で申し上げた通り、各行・列・ブロックの重複検査はしていませんので、
上の例ではブロック内の重複が発生しています。
重複がないようにするには、
第31講の局所リスト構造解析が必要になります。
尚、シートの罫線は手作業で作って下さい。

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