Hola, estoy haciendo un sudoku. Me falta la parte para comprobar que un número "x" , no se repita en su cuadro de 3x3, me imagino que sabrán a que me refiero, aquellos que lo sepan jugar. He logrado hacer la comprobación por filas y columnas.
La parte que está comentada es la supuesta búsqueda pero mal hecha.
La parte de la definición de la matriz cuadros correponde a los elementos que se encuentran en cada cuadro de 3x3.
Alguna ayuda?
La parte que está comentada es la supuesta búsqueda pero mal hecha.
La parte de la definición de la matriz cuadros correponde a los elementos que se encuentran en cada cuadro de 3x3.
Alguna ayuda?
Código (vb) [Seleccionar]
Dim cuadros(9, 9) As Integer
Private Sub Cmd_Comprobar_Click()
For i = 0 To 80
fila = i \ 9
columna = i Mod 9
For j = fila * 9 To (fila * 9) + 8
If i <> j Then
If Command1(j).Caption = Command1(i).Caption Then
Command1(i).FontBold = True
End If
End If
Next
For j = columna To 72 + columna Step 9
If i <> j Then
If Command1(j).Caption = Command1(i).Caption Then
Command1(i).FontBold = True
End If
End If
Next
'For k = i\3 To i\3
' For j = 0 To 8
' If cuadros(k, j) <> cuadros(fila, columna) Then
' If (Command1(cuadros(k, j)).Caption = Command1(i).Caption) And (Command1(cuadros(k, j)).Caption <> "") Then
' Command1(cuadros(k, j)).FontBold = True
' End If
' End If
'Next
'Next
Next
End Sub
Private Sub Cmd_LimpiarN_Click()
For i = 0 To 80
Command1(i).FontBold = False
Next
End Sub
Private Sub Command1_Click(Index As Integer)
Dim valor As Integer
Command1(Index).FontBold = False
valor = Val(InputBox("Ingresa numero", "Sudoku", ""))
If valor > 0 And valor < 10 Then
Command1(Index).Caption = valor
Else
Command1(Index).Caption = ""
End If
End Sub
Private Sub Form_Load()
Dim i As Integer
For i = 0 To 80
Command1(i).Caption = ""
Next
Cmd_Comprobar.Caption = "Comprobar"
Cmd_LimpiarN.Caption = "Limpiar comprobación"
cuadros(0, 0) = 0
cuadros(0, 1) = 1
cuadros(0, 2) = 2
cuadros(0, 3) = 9
cuadros(0, 4) = 10
cuadros(0, 5) = 11
cuadros(0, 6) = 18
cuadros(0, 7) = 19
cuadros(0, 8) = 20
cuadros(1, 0) = 3
cuadros(1, 1) = 4
cuadros(1, 2) = 5
cuadros(1, 3) = 12
cuadros(1, 4) = 13
cuadros(1, 5) = 14
cuadros(1, 6) = 21
cuadros(1, 7) = 22
cuadros(1, 8) = 23
cuadros(2, 0) = 6
cuadros(2, 1) = 7
cuadros(2, 2) = 8
cuadros(2, 3) = 15
cuadros(2, 4) = 16
cuadros(2, 5) = 17
cuadros(2, 6) = 24
cuadros(2, 7) = 25
cuadros(2, 8) = 26
cuadros(3, 0) = 27
cuadros(3, 1) = 28
cuadros(3, 2) = 29
cuadros(3, 3) = 36
cuadros(3, 4) = 37
cuadros(3, 5) = 38
cuadros(3, 6) = 45
cuadros(3, 7) = 46
cuadros(3, 8) = 47
cuadros(4, 0) = 30
cuadros(4, 1) = 31
cuadros(4, 2) = 32
cuadros(4, 3) = 39
cuadros(4, 4) = 40
cuadros(4, 5) = 41
cuadros(4, 6) = 48
cuadros(4, 7) = 49
cuadros(4, 8) = 50
cuadros(5, 0) = 33
cuadros(5, 1) = 34
cuadros(5, 2) = 35
cuadros(5, 3) = 42
cuadros(5, 4) = 43
cuadros(5, 5) = 44
cuadros(5, 6) = 51
cuadros(5, 7) = 52
cuadros(5, 8) = 53
cuadros(6, 0) = 54
cuadros(6, 1) = 55
cuadros(6, 2) = 56
cuadros(6, 3) = 63
cuadros(6, 4) = 64
cuadros(6, 5) = 65
cuadros(6, 6) = 72
cuadros(6, 7) = 73
cuadros(6, 8) = 74
cuadros(7, 0) = 57
cuadros(7, 1) = 58
cuadros(7, 2) = 59
cuadros(7, 3) = 66
cuadros(7, 4) = 67
cuadros(7, 5) = 68
cuadros(7, 6) = 75
cuadros(7, 7) = 76
cuadros(7, 8) = 77
cuadros(8, 0) = 60
cuadros(8, 1) = 61
cuadros(8, 2) = 62
cuadros(8, 3) = 69
cuadros(8, 4) = 70
cuadros(8, 5) = 71
cuadros(8, 6) = 78
cuadros(8, 7) = 79
cuadros(8, 8) = 80
End Sub