Título: [RETO] Sudoku
Publicado por: Psyke1 en 21 Septiembre 2011, 20:50 pm
Un reto dificilillo... Function SolveSudoku_raul338(s() As Byte) As Byte() Se introduce una matriz bidimensional de 9x9. Los huecos serán "0" Info 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. 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: 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. 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: 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í bSudoku(2, 2) = 6 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] ' ' ///////////////////////////////////////////////////////////// ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) // ' // // ' // Web: http://InfrAngeluX.Sytes.Net/ // ' // // ' // |-> Pueden Distribuir Este codigo siempre y cuando // ' // no se eliminen los creditos originales de este codigo // ' // No importando que sea modificado/editado o engrandecido // ' // o achicado, si es en base a este codigo // ' ///////////////////////////////////////////////////////////// Option Explicit Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Dim bSudoku(8, 8) As Byte ' // (nColumnas, nFilas) 'Private Sub cmdSolve_Click() ' fillSudoku bSudoku ' Caption = solveSudoku(bSudoku, 0, 0) ' // Por BackTracking ' showSudoku bSudoku 'End Sub Private Sub Form_Load() 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 "Matrix inicial." showSudoku bSudoku If solveSudoku(bSudoku, 0, 0) Then Debug.Print "Sudoku Resuelto" showSudoku bSudoku Else Debug.Print "No se puede resolver, revisa la matrix." End If End Sub Public Sub showSudoku(ByRef bArray() As Byte) Dim i As Integer Dim j As Integer Show For i = 0 To UBound(bArray, 1) ' // Fila For j = 0 To UBound(bArray, 2) ' // Columa 'txtCell((i * 9) + j).Text = bArray(j, i) If (((j + &H1) Mod &H3) = &H0) Then Debug.Print bArray(j, i); "|"; Else Debug.Print bArray(j, i); End If Next Debug.Print If (((i + &H1) Mod &H3) = &H0) Then Debug.Print String(32, "-") Next End Sub 'Public Sub fillSudoku(ByRef bArray() As Byte) 'Dim i As Integer 'Dim j As Integer ' Show ' For i = 0 To UBound(bArray, 1) ' // Fila ' For j = 0 To UBound(bArray, 2) ' // Columa ' bArray(j, i) = txtCell((i * 9) + j).Text ' Next ' Next 'End Sub Public Function chkRow(ByRef bArray() As Byte, ByVal lIndex As Long, ByVal lVal As Long) As Boolean ' // Revisa la existencia de lVal en una Fila (lIndex). Dim i As Long Do While (i < 8) And (chkRow = False) If (bArray(i, lIndex) = lVal) Then chkRow = True i = (i + &H1) Loop End Function Public Function chkCol(ByRef bArray() As Byte, ByVal lIndex As Long, ByVal lVal As Long) As Boolean ' // Revisa la existencia de lVal en una Columna (lIndex). Dim i As Long Do While (i < 8) And (chkCol = False) If (bArray(lIndex, i) = lVal) Then chkCol = True i = (i + &H1) Loop End Function Public Function chkRect(ByRef bArray() As Byte, ByVal lCol As Long, ByVal lRow As Long, ByVal lVal As Long) As Boolean ' // Revisa la existencia de lVal en el cuadrante desde la celda superior izquierda respectiva dados por (lCol, lRow). Dim i As Long Dim j As Long ' // Obtenemos los indices de la celda superior izquierda del cuadrante inicial respectivo. lRow = ((lRow \ 3) * 3) lCol = ((lCol \ 3) * 3) Do ' // Filas j = &H0 Do ' // Columnas If (bArray(lCol + j, lRow + i) = lVal) Then chkRect = True j = (j + &H1) Loop While (j < &H3) And (chkRect = False) i = (i + &H1) Loop While (i < &H3) And (chkRect = False) End Function Public Function solveSudoku(ByRef bArray() As Byte, ByVal lCol As Long, ByVal lRow As Long) As Boolean ' // Resuelve una Matrix de Sudoku de 9x9 celdas. ' // Si se retorna true, entonces la matrix ya esta Completa y/o Resuelta. Dim lVal As Long Dim i As Long ' // Termino de filas. If (lRow >= 9) Then solveSudoku = True: Exit Function ' // Nos posicionamos en la 1ra celda de lRow vacia (con valor 0). Do While Not (bArray(lCol, lRow) = &H0) And (solveSudoku = False) lCol = (lCol + &H1) If (lCol = &H9) Then lCol = &H0 lRow = (lRow + &H1) If (lRow >= &H8) Then solveSudoku = True End If Loop ' // Recorremos TODOS LOS VALORES desde 1 a 9 para la celda (lCol, lRow). For lVal = 1 To 9 If Not chkRect(bArray, lCol, lRow, lVal) Then ' // Cuadro de 3x3. If Not (chkRow(bArray, lRow, lVal)) Then ' // Fila. If Not (chkCol(bArray, lCol, lVal)) Then ' // Columnas. bArray(lCol, lRow) = lVal If (lCol < 8) Then ' // Aun no llegamos al final de la fila? solveSudoku = solveSudoku(bArray, (lCol + 1), lRow) Else ' // Iniciamos otra llamada si mismo pero en la siguiente fila solveSudoku = solveSudoku(bArray, 0, (lRow + 1)) End If If Not solveSudoku Then bArray(lCol, lRow) = 0 ' // Seteamos la celda a 0 para realizar el BackTracking. End If End If End If Next End Function
output: 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: 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: 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.
|