MISSING... VB :!:

Programs which generate, solve, and analyze Sudoku puzzles

MISSING... VB :!:

Postby Han » Wed Apr 26, 2006 3:47 am

hi,

ok this might be real easy for u guys.. ;)

Heres my VB code for the program. The codes used are based from other codes and tips from this forum. So far generating right numbers for all 9 row and 9 columns works well.:!: The problem is i cannot generate the right numbers for the smaller [3X3] boards. Help:!:

My code has 2 arrays..
1) Numbers(81) for the 81 squares in sudoku board
2) Check(9), additional array which stores used numbers from 1 to 9





'81 array for the 81 squares
Dim Numbers(80) As Integer
Dim Index As Integer

'initialize the random # generator.
Private Sub Form_Load()
Index = 0
Randomize
End Sub

'generate random numbers
Public Function Rand(ByVal Low As Long, _
ByVal High As Long) As Long
Rand = Int((High - Low + 1) * Rnd) + Low
End Function


'POPULATE SUDOKU
Private Sub cmdPopulate_Click()
Dim Number As Integer
Dim Check(9) As Integer
Dim CheckIndex As Integer
Dim Loops As Integer
Dim Col As Integer
Dim Row As Integer
Dim X As Integer
Dim Y As Integer
Dim ColIndex As Integer
CheckIndex = 0
X = 0
Y = 0

'fills 81 squares with random numbers from 1 to 9
For Index = 0 To 80
Number = Rand(1, 9)
'stores the numbers inside Numbers(80) array
Numbers(Index) = Number
Next Index

'loops 0 to 8 time, each time it loops y + 9
For Loops = 0 To 8
'loops 0 to 8 time, every time it loops x + y = index
For X = 0 To 8
Index = X + Y



'Check() is an array which represents 9 digits from 1 to 9
'each time this numbers is used in the puzzle, the array will mark 1
'if number is not used at all, array will mark 0
'first, fills Check() with 0. Since no number has been tried
For CheckIndex = 1 To 9
Check(CheckIndex) = 0
Next CheckIndex

'start checking each row and column
'used numbers is assign to Check()
For CheckIndex = 1 To 9
'Check Row
For Row = 0 + Y To 8 + Y
'each time a number is used inside the row, array marks 1
If Numbers(Row) = CheckIndex Then
Check(CheckIndex) = Check(CheckIndex) + 1
End If
'Check Column
For Col = Index - Y To 72 + Index - Y Step 9
'check to make sure column is less then 81
If Col <= 80 Then
'each time a number is used inside the column, array marks 1
If Numbers(Col) = CheckIndex Then
Check(CheckIndex) = Check(CheckIndex) + 1
End If
End If
Next Col
lblCheck(CheckIndex).Caption = Check(CheckIndex)
Next Row
Next CheckIndex

'now all the used numbers will be replace with the unused numbers.
If Index <= 80 Then
For CheckIndex = 1 To 9
'numbers with 0 value means it has not been used
'this will replace used numbers
If Check(CheckIndex) = 0 Then
Numbers(Index) = CheckIndex
txtBox(Index).Text = " " & CheckIndex & " "
lblDisplay.Caption = "FILLED!"
End If
Next CheckIndex
End If

Next X
Y = Y + 9
Next Loops

End Sub

:!::!:i cudnt think of a way. ideas please.
thanks.

-haN!-
Han
 
Posts: 2
Joined: 25 April 2006

Postby Ruud » Wed Apr 26, 2006 10:55 am

Hi Han,

did you know there is a Sudoku Programmers forum too? You can find it here: http://www.setbb.com/sudoku/

Ruud.
Ruud
 
Posts: 664
Joined: 28 October 2005

Postby Han » Wed Apr 26, 2006 3:27 pm

Ruud wrote:Hi Han,

did you know there is a Sudoku Programmers forum too? You can find it here: http://www.setbb.com/sudoku/

Ruud.



thx Ruud!! ;)

-haN!-
Han
 
Posts: 2
Joined: 25 April 2006


Return to Software