Título: Ayuda - Algoritmo Sudoku
Publicado por: VonN en 10 Julio 2009, 04:16 am
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? 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
Título: Re: Ayuda - Algoritmo Sudoku
Publicado por: VonN en 10 Julio 2009, 04:18 am
Tengan en cuenta que la definición de la matriz no es tan importante si se encuentra un algoritmo para buscar un elemento dentro de un cuadro de 3x3. Como verán se puede apreciar el algoritmo matemático para buscar elementos por filas y columnas, me imagino que existe uno para los cuadros 3x3 también, pero todavía no logro encontrarlo.
Muchas gracias por su ayuda.
PD: Traten de no ensuciar el post.
Título: Re: Ayuda - Algoritmo Sudoku
Publicado por: DarkItachi en 11 Julio 2009, 01:38 am
Perdona que no aporte nada pero me parece increible que el 75% del code sean asignaciones de array.
PD: Acabo de leer lo de no ensuciar el post, perdona :S
Título: Re: Ayuda - Algoritmo Sudoku
Publicado por: VonN en 11 Julio 2009, 02:02 am
Si lamentablemente no quería este tipo de mensajes.
Pero bien, la cosa es que no puedo encontrar un algoritmo matemático para reemplazarlo.
Título: Re: Ayuda - Algoritmo Sudoku
Publicado por: NsTeam en 11 Julio 2009, 02:13 am
mira
te dejo 2 S.Code
para que te guies
http://www.sendspace.com/file/zdqcpf
Salu2
Título: Re: Ayuda - Algoritmo Sudoku
Publicado por: BlackZeroX en 11 Julio 2009, 02:28 am
mira
te dejo 2 S.Code
para que te guies
http://www.sendspace.com/file/zdqcpf
Salu2
Tu archivo no tiene nada¡!
Título: Re: Ayuda - Algoritmo Sudoku
Publicado por: h0oke en 11 Julio 2009, 02:31 am
Hola VonN tu idea me ha gustado, imagino que es open source asi que lo mejoraré... Mientras, aqui te dejo un algoritmo para búsqueda en cuadros de 3x3 utilizando tu matriz: For i = 0 To 8 For j = 0 To 8 For k = 0 To 8 If j <> k Then If Command1(cuadros(i, j)).Caption = Command1(cuadros(i, k)).Caption Then Command1(cuadros(i, j)).FontBold = True End If End If Next Next Next
Un saludo!
Título: Re: Ayuda - Algoritmo Sudoku
Publicado por: VonN en 11 Julio 2009, 02:33 am
Exactamente FSEND a eso me refería. Parece que hay gente que no lee bien los post aqui.
Bien, ahora podré completar el trabajo, ya me estoy comunicando por MP's contigo. Es open source :xD, unicamente lo utilizo para practicar.
Un saludo!
Título: Re: Ayuda - Algoritmo Sudoku
Publicado por: h0oke en 11 Julio 2009, 02:35 am
:xD Bien, espero tus mp's, ahora lo mejoraré.
Un saludo!
|