elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [RETO] Sudoku
0 Usuarios y 3 Visitantes están viendo este tema.
Páginas: 1 [2] 3 Ir Abajo Respuesta Imprimir
Autor Tema: [RETO] Sudoku  (Leído 13,371 veces)
Sanlegas

Desconectado Desconectado

Mensajes: 131


https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-


Ver Perfil
Re: [RETO] Sudoku
« Respuesta #10 en: 23 Septiembre 2011, 07:24 am »

@Raul100 : No se supone que se deben rellenar los 0's ?


En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: [RETO] Sudoku
« Respuesta #11 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


En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #12 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.

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



«Si quieres la paz prepárate para la guerra» Flavius Vegetius

[Taller]Instalación/Configuración y Teoría de Servicios en Red
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #13 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!¡.
« Última modificación: 23 Septiembre 2011, 20:16 pm por BlackZeroX▓▓▒▒░░ » En línea

The Dark Shadow is my passion.
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #14 en: 23 Septiembre 2011, 13:45 pm »

La quinta regla de MadPitbull no siempre se cumple, ya que depende de la matriz de entrada :)
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #15 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.

É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
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: [RETO] Sudoku
« Respuesta #16 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"
« Última modificación: 23 Septiembre 2011, 17:55 pm por Raul100 » En línea

Sanlegas

Desconectado Desconectado

Mensajes: 131


https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-


Ver Perfil
Re: [RETO] Sudoku
« Respuesta #17 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
En línea

x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: [RETO] Sudoku
« Respuesta #18 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
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #19 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
En línea

Páginas: 1 [2] 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
programa pa resoler sudoku help!!!
Programación Visual Basic
scugat 5 2,038 Último mensaje 14 Enero 2006, 11:19 am
por scugat
ayuda con sudoku de imagenes
Programación Visual Basic
Lordbeni 4 3,153 Último mensaje 30 Enero 2006, 10:03 am
por Grimble Grumble
Sudoku.. « 1 2 »
Programación Visual Basic
loco! 16 8,252 Último mensaje 3 Junio 2006, 13:40 pm
por karmany
Ayuda - Algoritmo Sudoku
Programación Visual Basic
VonN 8 6,880 Último mensaje 11 Julio 2009, 02:35 am
por h0oke
Resolución sudoku heuristica
Programación General
psylock 6 8,289 Último mensaje 14 Noviembre 2011, 11:25 am
por BlackZeroX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines