Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: Psyke1 en 21 Septiembre 2011, 20:50 pm



Título: [RETO] Sudoku
Publicado por: Psyke1 en 21 Septiembre 2011, 20:50 pm
Un reto dificilillo...
Código:
Function SolveSudoku_raul338(s() As Byte) As Byte()
Se introduce una matriz bidimensional de 9x9. Los huecos serán "0"
Info
Código:
http://es.wikipedia.org/wiki/Sudoku
Vale todo, el más rápido gana.

DoEvents! :P


Título: Re: [RETO] Sudoku
Publicado por: Sanlegas en 22 Septiembre 2011, 06:36 am
Sin datos de entrada?, es decir que puedo rellenarlo de cualquier forma (respetando las reglas del sudoku) ? Salu2 !


Título: Re: [RETO] Sudoku
Publicado por: BlackZeroX en 22 Septiembre 2011, 06:55 am
@Tenient101

Desgraciadamente si...

Por otro lado se me ocurre usar el metodo BackTracking para esto ya que trae de por medio incertidumbre este reto.

Dulces Lunas!¡.


Título: Re: [RETO] Sudoku
Publicado por: Psyke1 en 22 Septiembre 2011, 16:53 pm
No, claro que hay datos de entrada.
Entra una matriz así:
(http://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Sudoku-by-L2G-20050714.gif/300px-Sudoku-by-L2G-20050714.gif)
Los huecos serán 0 en la matriz de entrada.
Y deberá retornar la matriz que corresponda a la solución.

@BlackZero
¿BackTracking? ¿Puedes explicar qué es? :huh:

DoEvents! :P


Título: Re: [RETO] Sudoku
Publicado por: Shell Root en 22 Septiembre 2011, 22:25 pm
:http://es.wikipedia.org/wiki/Vuelta_Atr%C3%A1s#Backtracking_para_la_enumeraci.C3.B3n


Título: Re: [RETO] Sudoku
Publicado por: $Edu$ en 22 Septiembre 2011, 23:02 pm
Jeje para mi que Black, nos enseñas a mi y a psyke backtracking, q aca en el foro nadie me pudo enseñar hasta ahora xD


Título: Re: [RETO] Sudoku
Publicado por: Psyke1 en 23 Septiembre 2011, 00:39 am
@Shell
Ok, gracias, ya entendí.


Un ej:
http://sudoku.friko.net/es/

DoEvents! :P


Título: Re: [RETO] Sudoku
Publicado por: Karcrack en 23 Septiembre 2011, 01:26 am
Hay que comprobar que los datos suministrados sean correctos? Es decir... que el sudoku sea resoluble?


Título: Re: [RETO] Sudoku
Publicado por: BlackZeroX en 23 Septiembre 2011, 03:40 am
@Karcrack

Me parece obvio que si.

Por mi parte tomando esto ultimo que dijo karcrack me parece que el prototipo deberia retornar un dato booleano... o algo que nos indique que el proceso se a completado correctamente ya que puedo meter numeros es las coordenadas respectivas sin respetar las reglas del sudoku.

Edito...
P.D.: Psyke1 desde cuando te tengo en el FaceBook!¡... hace mucho que no entro y apenas me di cuenta xD. madre me acabo de dar cuenta que tambien tengo a Raul338 O.o, yo ni me entero xP.

Dulces Lunas!¡.


Título: Re: [RETO] Sudoku
Publicado por: x64core en 23 Septiembre 2011, 06:23 am
yo termine mi sudoku ;D
me tarde mas en hacer lo grafico del programa que el algoritmo :P
lo e probado dos veces y me ah funcionado aunque tengo una espinita por ahi :P noce prueben y avisen ;D

(http://img535.imageshack.us/img535/2280/sudoe.png)

dejo las funciones con lo que estaba probando y como lo hice ;D

download sudoku:

http://www.mediafire.com/?n5zw3k7vp1smglq


Título: Re: [RETO] Sudoku
Publicado por: Sanlegas en 23 Septiembre 2011, 07:24 am
@Raul100 : No se supone que se deben rellenar los 0's ?


Título: Re: [RETO] Sudoku
Publicado por: x64core en 23 Septiembre 2011, 07:38 am
HAHAHAHA  :laugh: :xD
no puede ser... :xD parece que entendi mal el reto :P
yo hice el programa de sudoku :xD

ya decia yo que me tome toda la paciencia del mundo para hacer y no habia visto ningun codigo :xD eso es mas dificil creo bueno al menos ya tengo un parte y ahi queda el sources :xD


Título: Re: [RETO] Sudoku
Publicado por: madpitbull_99 en 23 Septiembre 2011, 09:27 am
Las reglas del Sudoku:

Regla 1: hay que completar las casillas vacías con un solo número del 1 al 9.

Regla 2: en una misma fila no puede haber números repetidos.

Regla 3: en una misma columna no puede haber números repetidos.

Regla 4: en una misma región no puede haber números repetidos.

Regla 5: la solución de un sudoku es única.


Reglas explicadas con imágenes (http://www.sudoku.name/rules/es).

Ésto tendrá que confirmarlo el autor del reto, si se respetan las reglas o no.


Título: Re: [RETO] Sudoku
Publicado por: BlackZeroX en 23 Septiembre 2011, 12:08 pm
ya que me estoy desvelando lo hize... como ven uso el metodo Recursivo para implementar el BackTracking.

* me falta optimizar algunos aspectos... no les dire donde para que no me roben xP.

Código
  1.  
  2. Option Explicit
  3.  
  4. Private Sub Form_Load()
  5. Dim bSudoku(8, 8)   As Byte '   //  (nFilas, nColumnas)
  6.    bSudoku(0, 0) = 5
  7.    bSudoku(0, 1) = 3
  8.    bSudoku(0, 4) = 7
  9.  
  10.    bSudoku(1, 0) = 6
  11.    bSudoku(1, 3) = 1
  12.    bSudoku(1, 4) = 9
  13.    bSudoku(1, 5) = 5
  14.  
  15.    bSudoku(2, 1) = 9
  16.    bSudoku(2, 2) = 6
  17.    bSudoku(2, 7) = 1
  18.  
  19.    bSudoku(3, 0) = 8
  20.    bSudoku(3, 4) = 6
  21.    bSudoku(3, 8) = 3
  22.  
  23.    bSudoku(4, 0) = 4
  24.    bSudoku(4, 3) = 8
  25.    bSudoku(4, 5) = 3
  26.    bSudoku(4, 8) = 1
  27.  
  28.    bSudoku(5, 0) = 7
  29.    bSudoku(5, 4) = 2
  30.    bSudoku(5, 8) = 6
  31.  
  32.    bSudoku(6, 1) = 6
  33.    bSudoku(6, 6) = 2
  34.    bSudoku(6, 7) = 8
  35.  
  36.    bSudoku(7, 3) = 4
  37.    bSudoku(7, 4) = 1
  38.    bSudoku(7, 5) = 9
  39.    bSudoku(7, 8) = 5
  40.  
  41.    bSudoku(8, 4) = 8
  42.    bSudoku(8, 7) = 7
  43.    bSudoku(8, 8) = 9
  44.  
  45.    Debug.Print "Inicial"
  46.    showSudoku bSudoku
  47.  
  48.    MsgBox solveSudoku(bSudoku, 0, 0)  '   //  Por BackTracking
  49.  
  50.    Debug.Print "Resuelto"
  51.    showSudoku bSudoku
  52.  
  53. End Sub
  54.  
  55. Public Sub showSudoku(ByRef bArray() As Byte)
  56. Dim i As Integer
  57. Dim j As Integer
  58.    For i = 0 To UBound(bArray, 1)
  59.        For j = 0 To UBound(bArray, 2)
  60.            Debug.Print bArray(i, j);
  61.        Next
  62.        Debug.Print
  63.    Next
  64.    Debug.Print
  65.    Debug.Print
  66. End Sub
  67.  
  68. Public Function solveSudoku(ByRef bArray() As Byte, ByVal iRow As Long, ByVal iCol As Long) As Boolean
  69. '   //  Me falta optimizar el proceso... Version 1.0.
  70. Dim lVal        As Long
  71. Dim i           As Long
  72.    If (iRow >= 9) Then
  73.        solveSudoku = True
  74.        Exit Function
  75.    End If
  76.    Do While Not (bArray(iRow, iCol) = &H0)    '   //  Nos posicionamos en la 1ra celda de iRow vacia (con valor 0).
  77.        iCol = (iCol + &H1)
  78.        If (iCol = 9) Then
  79.            iCol = &H0
  80.            iRow = (iRow + &H1)
  81.            If (iRow >= &H9) Then
  82.                solveSudoku = True
  83.                Exit Function
  84.            End If
  85.        End If
  86.    Loop
  87.    For lVal = 1 To 9                           '   //  Buscamos un valor valido para la celda...
  88.        For i = 0 To 8                          '   //  Verificamos cada celda de la columna iCol.
  89.            If (bArray(i, iCol) = lVal) Then
  90.                i = (-1)
  91.                Exit For
  92.            End If
  93.        Next
  94.        If Not (i = (-1)) Then
  95.            For i = 0 To 8                      '   //  Verificamos cada celda de la Fila iRow.
  96.                If (bArray(iRow, i) = lVal) Then
  97.                    i = (-1)
  98.                    Exit For
  99.                End If
  100.            Next
  101.            If Not (i = (-1)) Then
  102.                bArray(iRow, iCol) = lVal       '   //  Seteamos su valor.
  103.                If (iCol < 8) Then              '   //  Avazamos a la siguiente celda a resolver.
  104.                    solveSudoku = solveSudoku(bArray, iRow, iCol + 1)
  105.                    If Not solveSudoku Then
  106.                        bArray(iRow, iCol) = 0  '   //  Error entonces volvemos atras.
  107.                    End If
  108.                Else
  109.                    solveSudoku = solveSudoku(bArray, iRow + 1, 0)
  110.                    If Not solveSudoku(bArray, iRow + 1, 0) Then
  111.                        bArray(iRow, iCol) = 0  '   //  Error entonces volvemos atras.
  112.                    End If
  113.                End If
  114.            End If
  115.        End If
  116.    Next
  117.  
  118. End Function
  119.  
  120.  

output:

Código:

Inicial
 5  3  0  0  7  0  0  0  0
 6  0  0  1  9  5  0  0  0
 0  9  6  0  0  0  0  1  0
 8  0  0  0  6  0  0  0  3
 4  0  0  8  0  3  0  0  1
 7  0  0  0  2  0  0  0  6
 0  6  0  0  0  0  2  8  0
 0  0  0  4  1  9  0  0  5
 0  0  0  0  8  0  0  7  9


Resuelto
 5  3  1  2  7  6  4  9  8
 6  2  4  1  9  5  8  3  7
 3  9  6  5  4  8  7  1  2
 8  5  2  9  6  7  1  4  3
 4  7  9  8  5  3  6  2  1
 7  1  8  3  2  4  9  5  6
 9  6  5  7  3  1  2  8  4
 2  8  7  4  1  9  3  6  5
 1  4  3  6  8  2  5  7  9


Temibles Lunas!¡.


Título: Re: [RETO] Sudoku
Publicado por: raul338 en 23 Septiembre 2011, 13:45 pm
La quinta regla de MadPitbull no siempre se cumple, ya que depende de la matriz de entrada :)


Título: Re: [RETO] Sudoku
Publicado por: Psyke1 en 23 Septiembre 2011, 16:13 pm
Las reglas del Sudoku:

Regla 1: hay que completar las casillas vacías con un solo número del 1 al 9.

Regla 2: en una misma fila no puede haber números repetidos.

Regla 3: en una misma columna no puede haber números repetidos.

Regla 4: en una misma región no puede haber números repetidos.

Regla 5: la solución de un sudoku es única.


Reglas explicadas con imágenes (http://www.sudoku.name/rules/es).

Ésto tendrá que confirmarlo el autor del reto, si se respetan las reglas o no.
Éso es madpitbull_99, pero como dice raul a veces hay más de una solución válida, a mí me a pasado.
Código:
http://es.answers.yahoo.com/question/index?qid=20110327233520AA7q9QG

@BlackZero: Precioso el código, voy a analizarlo. :D

DoEvents! :P


Título: Re: [RETO] Sudoku
Publicado por: x64core en 23 Septiembre 2011, 17:42 pm
a mi me da otra respuesta :p osea que tiene varias formas de resolverse el sudoku :P

PD por cierto BlackZeroX felicidades ;D
e visto mas o menos algunos otros codigos y al parecer el tuyo es el mas "pequeño"


Título: Re: [RETO] Sudoku
Publicado por: Sanlegas en 24 Septiembre 2011, 05:06 am
habra que pensarlo bien  :silbar:

@BlackZeroX▓▓▒▒░░
en tu ejemplo de salida hay numeros que se repiten en la misma region...


Salu2


Título: Re: [RETO] Sudoku
Publicado por: x64core en 24 Septiembre 2011, 05:16 am
habra que pensarlo bien  :silbar:

@BlackZeroX▓▓▒▒░░
en tu ejemplo de salida hay numeros que se repiten en la misma region...


Salu2

no entiendo a que te refieres :P en el ejemplo este:

Citar
Inicial
 5  3  0  0  7  0  0  0  0
 6  0  0  1  9  5  0  0  0
 0  9  6  0  0  0  0  1  0
 8  0  0  0  6  0  0  0  3
 4  0  0  8  0  3  0  0  1
 7  0  0  0  2  0  0  0  6
 0  6  0  0  0  0  2  8  0
 0  0  0  4  1  9  0  0  5
 0  0  0  0  8  0  0  7  9


Resuelto
 5  3  1  2  7  6  4  9  8
 6  2  4  1  9  5  8  3  7
 3  9  6  5  4  8  7  1  2
 8  5  2  9  6  7  1  4  3
 4  7  9  8  5  3  6  2  1
 7  1  8  3  2  4  9  5  6
 9  6  5  7  3  1  2  8  4
 2  8  7  4  1  9  3  6  5
 1  4  3  6  8  2  5  7  9


ese ejemplo esta resuelto correctamente no veo adonde esta el error, use el buscador de palabras del navegador


Título: Re: [RETO] Sudoku
Publicado por: raul338 en 24 Septiembre 2011, 05:24 am
En el primer cuadrante :P

 5  3  1
 6  2  4
 3  9  6

En el cuadrante superior derecho se repiten los 8 :P


Título: Re: [RETO] Sudoku
Publicado por: x64core en 24 Septiembre 2011, 05:31 am
 :-\ aun no e encontrado adonde esta el error si existe ya me estoy quedando ciego :P lo que si me di cuenta es
que BlackZeroX escribio mal el sudoku :P

 5  3  1
 6  2  4
 3  9  6

el 6 es en la imagen 8 quiza eso debe ser la razon porque quiza algunos de nosotros lo resolvimos y no nos dio el mismo resultado :P

EDIT:
lo e comprobado el resultado de BlackZeroX con el programa que publique :xD
y me salio correcto ;D ( o mi programa tambien esta malo :xD )
me di cuenta tambien que hay otro valor mal escrito:


(inicial, esquina superior derecha):

  0  0  0
  0  0  0
  0 1  0

el resultado al parecer es correcto lo que paso es que BlackZeroX escribio mal los valores osea que ese
es otro resultado de otro juego de sudoku :P
quien corrobora? :P


Título: Re: [RETO] Sudoku
Publicado por: Sanlegas en 24 Septiembre 2011, 06:20 am
el metio los valores así

Código
  1. bSudoku(2, 2) = 6
  2. bSudoku(2, 7) = 1


Y aunque fuera de otro sudoku las reglas se aplican...

Salu2!


Título: Re: [RETO] Sudoku
Publicado por: x64core en 24 Septiembre 2011, 06:32 am
 :rolleyes:
si pero eso que quiere decir? lo que veo yo es que escribio otro problema de sudoku no que el codigo da un resultado incorrecto :P
bueno ya no desviare el tema :P creo que esta claro :P


Título: Re: [RETO] Sudoku
Publicado por: BlackZeroX en 24 Septiembre 2011, 06:46 am
JAJAJA pense que nadie lo hiba a notar xP... ya lo corrijo.

Dulces Lunas!¡.


Título: Re: [RETO] Sudoku
Publicado por: BlackZeroX en 24 Septiembre 2011, 08:11 am
.
Optimise varias cosas...

[opcional]
El siguiente codigo requiere de un form con varios textbox llamados txtCell (matrix de controles) y un boton llamado cmdSolve, pongo en descarga el archivo para bajar.
[/opcional]

Código
  1.  
  2. '
  3. '   /////////////////////////////////////////////////////////////
  4. '   // Autor:   BlackZeroX ( Ortega Avila Miguel Angel )       //
  5. '   //                                                         //
  6. '   // Web:     http://InfrAngeluX.Sytes.Net/                  //
  7. '   //                                                         //
  8. '   //    |-> Pueden Distribuir Este codigo siempre y cuando   //
  9. '   // no se eliminen los creditos originales de este codigo   //
  10. '   // No importando que sea modificado/editado o engrandecido //
  11. '   // o achicado, si es en base a este codigo                 //
  12. '   /////////////////////////////////////////////////////////////
  13.  
  14. Option Explicit
  15.  
  16. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  17.  
  18. Dim bSudoku(8, 8)   As Byte '   //  (nColumnas, nFilas)
  19.  
  20. 'Private Sub cmdSolve_Click()
  21. '    fillSudoku bSudoku
  22. '    Caption = solveSudoku(bSudoku, 0, 0) '   //  Por BackTracking
  23. '    showSudoku bSudoku
  24. 'End Sub
  25.  
  26. Private Sub Form_Load()
  27.    bSudoku(0, 0) = 5
  28.    bSudoku(0, 1) = 3
  29.    bSudoku(0, 4) = 7
  30.  
  31.    bSudoku(1, 0) = 6
  32.    bSudoku(1, 3) = 1
  33.    bSudoku(1, 4) = 9
  34.    bSudoku(1, 5) = 5
  35.  
  36.    bSudoku(2, 1) = 9
  37.    bSudoku(2, 2) = 6
  38.    bSudoku(2, 7) = 1
  39.  
  40.    bSudoku(3, 0) = 8
  41.    bSudoku(3, 4) = 6
  42.    bSudoku(3, 8) = 3
  43.  
  44.    bSudoku(4, 0) = 4
  45.    bSudoku(4, 3) = 8
  46.    bSudoku(4, 5) = 3
  47.    bSudoku(4, 8) = 1
  48.  
  49.    bSudoku(5, 0) = 7
  50.    bSudoku(5, 4) = 2
  51.    bSudoku(5, 8) = 6
  52.  
  53.    bSudoku(6, 1) = 6
  54.    bSudoku(6, 6) = 2
  55.    bSudoku(6, 7) = 8
  56.  
  57.    bSudoku(7, 3) = 4
  58.    bSudoku(7, 4) = 1
  59.    bSudoku(7, 5) = 9
  60.    bSudoku(7, 8) = 5
  61.  
  62.    bSudoku(8, 4) = 8
  63.    bSudoku(8, 7) = 7
  64.    bSudoku(8, 8) = 9
  65.  
  66.    Debug.Print "Matrix inicial."
  67.    showSudoku bSudoku
  68.    If solveSudoku(bSudoku, 0, 0) Then
  69.        Debug.Print "Sudoku Resuelto"
  70.        showSudoku bSudoku
  71.    Else
  72.        Debug.Print "No se puede resolver, revisa la matrix."
  73.    End If
  74. End Sub
  75.  
  76. Public Sub showSudoku(ByRef bArray() As Byte)
  77. Dim i As Integer
  78. Dim j As Integer
  79.    Show
  80.    For i = 0 To UBound(bArray, 1)          '   //  Fila
  81.        For j = 0 To UBound(bArray, 2)      '   //  Columa
  82.            'txtCell((i * 9) + j).Text = bArray(j, i)
  83.            If (((j + &H1) Mod &H3) = &H0) Then
  84.                Debug.Print bArray(j, i); "|";
  85.            Else
  86.                Debug.Print bArray(j, i);
  87.            End If
  88.        Next
  89.        Debug.Print
  90.        If (((i + &H1) Mod &H3) = &H0) Then Debug.Print String(32, "-")
  91.    Next
  92. End Sub
  93.  
  94. 'Public Sub fillSudoku(ByRef bArray() As Byte)
  95. 'Dim i As Integer
  96. 'Dim j As Integer
  97. '    Show
  98. '    For i = 0 To UBound(bArray, 1)          '   //  Fila
  99. '        For j = 0 To UBound(bArray, 2)      '   //  Columa
  100. '            bArray(j, i) = txtCell((i * 9) + j).Text
  101. '        Next
  102. '    Next
  103. 'End Sub
  104.  
  105. Public Function chkRow(ByRef bArray() As Byte, ByVal lIndex As Long, ByVal lVal As Long) As Boolean
  106. '   //  Revisa la existencia de lVal en una Fila (lIndex).
  107. Dim i           As Long
  108.    Do While (i < 8) And (chkRow = False)
  109.        If (bArray(i, lIndex) = lVal) Then chkRow = True
  110.        i = (i + &H1)
  111.    Loop
  112. End Function
  113.  
  114. Public Function chkCol(ByRef bArray() As Byte, ByVal lIndex As Long, ByVal lVal As Long) As Boolean
  115. '   //  Revisa la existencia de lVal en una Columna (lIndex).
  116. Dim i           As Long
  117.    Do While (i < 8) And (chkCol = False)
  118.        If (bArray(lIndex, i) = lVal) Then chkCol = True
  119.        i = (i + &H1)
  120.    Loop
  121. End Function
  122.  
  123. Public Function chkRect(ByRef bArray() As Byte, ByVal lCol As Long, ByVal lRow As Long, ByVal lVal As Long) As Boolean
  124. '   //  Revisa la existencia de lVal en el cuadrante desde la celda superior izquierda respectiva dados por (lCol, lRow).
  125. Dim i           As Long
  126. Dim j           As Long
  127.    '   //  Obtenemos los indices de la celda superior izquierda del cuadrante inicial respectivo.
  128.    lRow = ((lRow \ 3) * 3)
  129.    lCol = ((lCol \ 3) * 3)
  130.    Do          '   //  Filas
  131.        j = &H0
  132.        Do          '   //  Columnas
  133.            If (bArray(lCol + j, lRow + i) = lVal) Then chkRect = True
  134.            j = (j + &H1)
  135.        Loop While (j < &H3) And (chkRect = False)
  136.        i = (i + &H1)
  137.    Loop While (i < &H3) And (chkRect = False)
  138. End Function
  139.  
  140. Public Function solveSudoku(ByRef bArray() As Byte, ByVal lCol As Long, ByVal lRow As Long) As Boolean
  141. '   //  Resuelve una Matrix de Sudoku de 9x9 celdas.
  142. '   //  Si se retorna true, entonces la matrix ya esta Completa y/o Resuelta.
  143. Dim lVal        As Long
  144. Dim i           As Long
  145.  
  146.    '   //  Termino de filas.
  147.    If (lRow >= 9) Then solveSudoku = True: Exit Function
  148.  
  149.    '   //  Nos posicionamos en la 1ra celda de lRow vacia (con valor 0).
  150.    Do While Not (bArray(lCol, lRow) = &H0) And (solveSudoku = False)
  151.        lCol = (lCol + &H1)
  152.        If (lCol = &H9) Then
  153.            lCol = &H0
  154.            lRow = (lRow + &H1)
  155.            If (lRow >= &H8) Then solveSudoku = True
  156.        End If
  157.    Loop
  158.  
  159.    '   //  Recorremos TODOS LOS VALORES desde 1 a 9 para la celda (lCol, lRow).
  160.    For lVal = 1 To 9
  161.        If Not chkRect(bArray, lCol, lRow, lVal) Then       '   //  Cuadro de 3x3.
  162.            If Not (chkRow(bArray, lRow, lVal)) Then        '   //  Fila.
  163.                If Not (chkCol(bArray, lCol, lVal)) Then    '   //  Columnas.
  164.                    bArray(lCol, lRow) = lVal
  165.                    If (lCol < 8) Then                      '   //  Aun no llegamos al final de la fila?
  166.                        solveSudoku = solveSudoku(bArray, (lCol + 1), lRow)
  167.                    Else                                    '   //  Iniciamos otra llamada si mismo pero en la siguiente fila
  168.                        solveSudoku = solveSudoku(bArray, 0, (lRow + 1))
  169.                    End If
  170.                    If Not solveSudoku Then bArray(lCol, lRow) = 0  '   //  Seteamos la celda a 0 para realizar el BackTracking.
  171.                End If
  172.            End If
  173.        End If
  174.    Next
  175.  
  176. End Function
  177.  
  178.  

output:

Código:

Matrix inicial.
 5  6  0 | 8  4  7 | 0  0  0 |
 3  0  9 | 0  0  0 | 6  0  0 |
 0  0  6 | 0  0  0 | 0  0  0 |
--------------------------------
 0  1  0 | 0  8  0 | 0  4  0 |
 7  9  0 | 6  0  2 | 0  1  8 |
 0  5  0 | 0  3  0 | 0  9  0 |
--------------------------------
 0  0  0 | 0  0  0 | 2  0  0 |
 0  0  1 | 0  0  0 | 8  0  7 |
 0  0  0 | 3  1  6 | 0  5  9 |
--------------------------------
No se puede resolver, revisa la matrix.



con la matrix:

Código:

    bSudoku(5, 0) = 5
    bSudoku(6, 0) = 2
   
    bSudoku(1, 1) = 6
    bSudoku(2, 1) = 5
    bSudoku(4, 1) = 3
   
    bSudoku(0, 2) = 9
    bSudoku(1, 2) = 3
    bSudoku(5, 2) = 1
   
    bSudoku(1, 3) = 9
    bSudoku(3, 3) = 4
    bSudoku(4, 3) = 6
    bSudoku(5, 3) = 3
   
    bSudoku(8, 4) = 8
   
    bSudoku(1, 5) = 7
    bSudoku(3, 5) = 8
    bSudoku(6, 5) = 6
   
    bSudoku(1, 6) = 8
    bSudoku(3, 6) = 1
    bSudoku(7, 6) = 3
    bSudoku(8, 6) = 2
   
    bSudoku(4, 7) = 8
    bSudoku(8, 7) = 4
   
    bSudoku(0, 8) = 5
    bSudoku(4, 8) = 9


Output:

Código:

Matrix inicial.
 0  0  0 | 0  0  5 | 2  0  0 |
 0  6  5 | 0  3  0 | 0  0  0 |
 9  3  0 | 0  0  1 | 0  0  0 |
--------------------------------
 0  9  0 | 4  6  3 | 0  0  0 |
 0  0  0 | 0  0  0 | 0  0  8 |
 0  7  0 | 8  0  0 | 6  0  0 |
--------------------------------
 0  8  0 | 1  0  0 | 0  3  2 |
 0  0  0 | 0  8  0 | 0  0  4 |
 5  0  0 | 0  9  0 | 0  0  0 |
--------------------------------
Sudoku Resuelto
 1  4  8 | 6  7  5 | 2  9  3 |
 2  6  5 | 9  3  8 | 4  1  7 |
 9  3  7 | 2  4  1 | 8  5  6 |
--------------------------------
 8  9  2 | 4  6  3 | 1  7  5 |
 4  5  6 | 7  1  9 | 3  2  8 |
 3  7  1 | 8  5  2 | 6  4  9 |
--------------------------------
 6  8  9 | 1  2  7 | 5  3  2 |
 7  1  3 | 5  8  4 | 9  6  4 |
 5  2  4 | 3  9  6 | 7  8  1 |
--------------------------------


Temibles Lunas!¡.


Título: Re: [RETO] Sudoku
Publicado por: fary en 24 Septiembre 2011, 13:02 pm

Matrix inicial.
 0  0  0 | 0  0  5 | 2  0  0 |
 0  6  5 | 0  3  0 | 0  0  0 |
 9  3  0 | 0  0  1 | 0  0  0 |
--------------------------------
 0  9  0 | 4  6  3 | 0  0  0 |
 0  0  0 | 0  0  0 | 0  0  8 |
 0  7  0 | 8  0  0 | 6  0  0 |
--------------------------------
 0  8  0 | 1  0  0 | 0  3  2 |
 0  0  0 | 0  8  0 | 0  0  4 |
 5  0  0 | 0  9  0 | 0  0  0 |
--------------------------------
Sudoku Resuelto
 1  4  8 | 6  7  5 | 2  9  3 |
 2  6  5 | 9  3  8 | 4  1  7 |
 9  3  7 | 2  4  1 | 8  5  6 |
--------------------------------
 8  9  2 | 4  6  3 | 1  7  5 |
 4  5  6 | 7  1  9 | 3  2  8 |
 3  7  1 | 8  5  2 | 6  4  9 |
--------------------------------
 6  8  9 | 1  2  7 | 5  3  2 |
 7  1  3 | 5  8  4 | 9  6  4 |
 5  2  4 | 3  9  6 | 7  8  1 |
--------------------------------


saludos.