elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 09:01  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo, raul338)
| | |-+  [RETO] Sudoku
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [RETO] Sudoku  (Leído 2,402 veces)
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
[RETO] Sudoku
« en: 21 Septiembre 2011, 20:50 »

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


En línea

Tenient101

Desconectado Desconectado

Mensajes: 127


Ver Perfil
Re: [RETO] Sudoku
« Respuesta #1 en: 22 Septiembre 2011, 06:36 »

Sin datos de entrada?, es decir que puedo rellenarlo de cualquier forma (respetando las reglas del sudoku) ? Salu2 !


En línea
BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #2 en: 22 Septiembre 2011, 06:55 »

@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!¡.
« Última modificación: 22 Septiembre 2011, 06:57 por BlackZeroX▓▓▒▒░░ » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #3 en: 22 Septiembre 2011, 16:53 »

No, claro que hay datos de entrada.
Entra una matriz así:

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

Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #4 en: 22 Septiembre 2011, 22:25 »

:http://es.wikipedia.org/wiki/Vuelta_Atr%C3%A1s#Backtracking_para_la_enumeraci.C3.B3n
En línea

---
$Edu$


Desconectado Desconectado

Mensajes: 1.416



Ver Perfil
Re: [RETO] Sudoku
« Respuesta #5 en: 22 Septiembre 2011, 23:02 »

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

"Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas." - Albert Einstein.
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.005



Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #6 en: 23 Septiembre 2011, 00:39 »

@Shell
Ok, gracias, ya entendí.


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

DoEvents! :P
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.192


Se siente observado ¬¬'


Ver Perfil
Re: [RETO] Sudoku
« Respuesta #7 en: 23 Septiembre 2011, 01:26 »

Hay que comprobar que los datos suministrados sean correctos? Es decir... que el sudoku sea resoluble?
En línea

BlackZeroX (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #8 en: 23 Septiembre 2011, 03:40 »

@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!¡.
« Última modificación: 23 Septiembre 2011, 04:07 por BlackZeroX▓▓▒▒░░ » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: [RETO] Sudoku
« Respuesta #9 en: 23 Septiembre 2011, 06:23 »

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



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

download sudoku:

http://www.mediafire.com/?n5zw3k7vp1smglq
En línea
Tenient101

Desconectado Desconectado

Mensajes: 127


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

@Raul100 : No se supone que se deben rellenar los 0's ?
En línea
RHL


Desconectado Desconectado

Mensajes: 968


mental


Ver Perfil
Re: [RETO] Sudoku
« Respuesta #11 en: 23 Septiembre 2011, 07:38 »

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
Moderador Global
***
Desconectado Desconectado

Mensajes: 1.898



Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #12 en: 23 Septiembre 2011, 09:27 »

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 (Astaroth)
Wiki

Desconectado Desconectado

Mensajes: 2.832


I'Love...!¡.


Ver Perfil WWW
Re: [RETO] Sudoku
« Respuesta #13 en: 23 Septiembre 2011, 12:08 »

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
 
Option Explicit
 
Private Sub Form_Load()
Dim bSudoku(8, 8)   As Byte '   //  (nFilas, nColumnas)
   bSudoku(0, 0) = 5
   bSudoku(0, 1) = 3
   bSudoku(0, 4) = 7
 
   bSudoku(1, 0) = 6
   bSudoku(1, 3) = 1
   bSudoku(1, 4) = 9
   bSudoku(1, 5) = 5
 
   bSudoku(2, 1) = 9
   bSudoku(2, 2) = 6
   bSudoku(2, 7) = 1
 
   bSudoku(3, 0) = 8
   bSudoku(3, 4) = 6
   bSudoku(3, 8) = 3
 
   bSudoku(4, 0) = 4
   bSudoku(4, 3) = 8
   bSudoku(4, 5) = 3
   bSudoku(4, 8) = 1
 
   bSudoku(5, 0) = 7
   bSudoku(5, 4) = 2
   bSudoku(5, 8) = 6
 
   bSudoku(6, 1) = 6
   bSudoku(6, 6) = 2
   bSudoku(6, 7) = 8
 
   bSudoku(7, 3) = 4
   bSudoku(7, 4) = 1
   bSudoku(7, 5) = 9
   bSudoku(7, 8) = 5
 
   bSudoku(8, 4) = 8
   bSudoku(8, 7) = 7
   bSudoku(8, 8) = 9
 
   Debug.Print "Inicial"
   showSudoku bSudoku
 
   MsgBox solveSudoku(bSudoku, 0, 0)  '   //  Por BackTracking
   
   Debug.Print "Resuelto"
   showSudoku bSudoku
 
End Sub
 
Public Sub showSudoku(ByRef bArray() As Byte)
Dim i As Integer
Dim j As Integer
   For i = 0 To UBound(bArray, 1)
       For j = 0 To UBound(bArray, 2)
           Debug.Print bArray(i, j);
       Next
       Debug.Print
   Next
   Debug.Print
   Debug.Print
End Sub
 
Public Function solveSudoku(ByRef bArray() As Byte, ByVal iRow As Long, ByVal iCol As Long) As Boolean
'   //  Me falta optimizar el proceso... Version 1.0.
Dim lVal        As Long
Dim i           As Long
   If (iRow >= 9) Then
       solveSudoku = True
       Exit Function
   End If
   Do While Not (bArray(iRow, iCol) = &H0)    '   //  Nos posicionamos en la 1ra celda de iRow vacia (con valor 0).
       iCol = (iCol + &H1)
       If (iCol = 9) Then
           iCol = &H0
           iRow = (iRow + &H1)
           If (iRow >= &H9) Then
               solveSudoku = True
               Exit Function
           End If
       End If
   Loop
   For lVal = 1 To 9                           '   //  Buscamos un valor valido para la celda...
       For i = 0 To 8                          '   //  Verificamos cada celda de la columna iCol.
           If (bArray(i, iCol) = lVal) Then
               i = (-1)
               Exit For
           End If
       Next
       If Not (i = (-1)) Then
           For i = 0 To 8                      '   //  Verificamos cada celda de la Fila iRow.
               If (bArray(iRow, i) = lVal) Then
                   i = (-1)
                   Exit For
               End If
           Next
           If Not (i = (-1)) Then
               bArray(iRow, iCol) = lVal       '   //  Seteamos su valor.
               If (iCol < 8) Then              '   //  Avazamos a la siguiente celda a resolver.
                   solveSudoku = solveSudoku(bArray, iRow, iCol + 1)
                   If Not solveSudoku Then
                       bArray(iRow, iCol) = 0  '   //  Error entonces volvemos atras.
                   End If
               Else
                   solveSudoku = solveSudoku(bArray, iRow + 1, 0)
                   If Not solveSudoku(bArray, iRow + 1, 0) Then
                       bArray(iRow, iCol) = 0  '   //  Error entonces volvemos atras.
                   End If
               End If
           End If
       End If
   Next
 
End Function
 
 

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 por BlackZeroX▓▓▒▒░░ » En línea

Web Principal-->[ Blog(VB6) | Host File (Public & Private) | Scan Port | (New)MyInfraPC (Descubre mi Contraseña venefi. $) ]



The Dark Shadow is my passion.
El infierno es mi Hogar, mi novia es Lilith y el metal mi
raul338
Moderador
***
Desconectado Desconectado

Mensajes: 2.372


La sonrisa es la mejor forma de afrontar las cosas


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

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

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

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sudoku.. « 1 2 »
Programación Visual Basic
loco! 16 1,584 Último mensaje 3 Junio 2006, 13:40
por karmany
Matrices en c++(Sudoku)
Programación C/C++
dark_headhunter 3 6,221 Último mensaje 14 Enero 2008, 02:16
por Flakito81
Programando Sudoku
Programación C/C++
AxXioma 4 835 Último mensaje 7 Febrero 2008, 15:03
por AxXioma
Sudoku [Aporte] « 1 2 »
Programación C/C++
AxXioma 15 2,603 Último mensaje 10 Agosto 2008, 23:07
por AxXioma
Sudoku???
Foro Libre
Castiblanco 3 491 Último mensaje 2 Marzo 2008, 01:41
por skan
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines