Ver la versión completa : [BUSCO] ALguien que haya programado un Sudoku
Hola, como práctica optativa me han mandado hacer un sudoku en Pascal, solo introducir los números y comprobar si esta bien resuelto. Total que he pensado en resolverlo por 45s (el sudoku está bien si todas las filas y columnas suman 45, es matemáticamente imposible que el sudoku esté bien si no cumple este requisito).
Como voy un poco a ciegas me gustaría que alguien que haya echo lo mio antes me eche un cable (o el ejercicio resuelto xD). recuerdo que trabajo en Pascal.
Gracias ^^
The_Punisher
30/03/2006, 19:46
Buenas pakoito yo de programación 0, solo se mítico hola mundo para c++ xD ahora en serio nose si en tu facultad te han dado mas o menos pistas pero buscando por internet encontre esto (http://www.lawebdelprogramador.com/news/mostrar_new.php?id=69&texto=Pascal/Turbo+Pascal&n1=337002&n2=0&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0), al parecer hay bastante gente que anda como tu xD, suerte a ver si consigo algo mejor.
A ver si esto va mejorando http://www.lugmen.org.ar/pipermail/lug-devel/2005-December/000682.html
Esa es una buena forma para saber si esta bien resuelto, pero supongo que tb te habran mandado que te genero sudokus, no?
Si es asi supongo que tiene que ser mas dificil, no?
O los sudokus los lee de fichero?
Saludos
The_Punisher
30/03/2006, 19:53
Ahora me pregunto yo, si es práctica optativa porque no le enseñas un programa que resuelva, que de esos si que hay, y le dices que con el otro no pudiste, supongo que mejor que nada...
Esa es una buena forma para saber si esta bien resuelto, pero supongo que tb te habran mandado que te genero sudokus, no?
Si es asi supongo que tiene que ser mas dificil, no?
O los sudokus los lee de fichero?
SaludosLos sudokus se introducen por teclado en plan matriz, asi que no, no es dificil...
@The punisher: Gracias por los enlaces, pero el 1º lo hace de la forma dificil y el 2º es demasiado complejo para lo que yo busco...
The_Punisher
30/03/2006, 20:03
@The punisher: Gracias por los enlaces, pero el 1º lo hace de la forma dificil y el 2º es demasiado complejo para lo que yo busco...
Una pena que no te sirvan lo siento, suerte :brindis:
si, todas las filas y las columnas tienen que sumar 45, pero no te olvides que los cuadrantes también... eso no es nada dificil.
Yo estoy estudiando informática, y he programado en java y en delphi que también es pascal, si tienes alguna duda te puedo ayudar, pero vamos, yo lo veo muy fácil. Intenta hacerlo y si tienes alguna duda me pasas el código fuente y te ayudo.
< - >
Ahora me pregunto yo, si es práctica optativa porque no le enseñas un programa que resuelva, que de esos si que hay, y le dices que con el otro no pudiste, supongo que mejor que nada...
jejej, si, si que los hay... pero están hecho para implementar un algoritmo que se llama backtracking... y el profesor no se va a creer, pero ni de coña, que lo ha hecho el jejeje [wei5] . en cual quier caso, cómo he dicho antes es muy fácil.
si, todas las filas y las columnas tienen que sumar 45, pero no te olvides que los cuadrantes también... eso no es nada dificil.Los cuadrantes con ese método no hace falta comprobarlos. Sale automáticamente, es matemáticas :D
Yo estoy estudiando informática, y he programado en java y en delphi que también es pascal, si tienes alguna duda te puedo ayudar, pero vamos, yo lo veo muy fácil. Intenta hacerlo y si tienes alguna duda me pasas el código fuente y te ayudo.Ok, esta noche tendre una version previa. Agregame al email que te mando por PM...
Los cuadrantes con ese método no hace falta comprobarlos. Sale automáticamente, es matemáticas :D
Ok, esta noche tendre una version previa. Agregame al email que te mando por PM...
MMM, creo que no, si tienes un cuadrante tal que asi:
987
879
798
Puede complirse la suma de 45 en filas y columnas, pero no en cuadrantes de 3x3 dentro del del array de 9x9.
Saludos
para comprobarlo, podrias hacer primero un bucle que sume filas y otro de columnas, y despuues el ultimo que sume cuadrantes.
Asi, a bote pronto es lo que se me ocurre
Teniendo en cuenta que no tengo ni idea de Pasca, en C seria algo parecido ha:
//declaracion de variables
int sudoku[9][9];
int sumatorio;
int i;
int j;
int tipoSum; //para saber si sumas filas, columnas o cuadrantes
int numCuadr; //para saber el cuadrante que sumas,son de 3x3,hay9
//inicializacion de variables
sumatorio=0;
i=0;
j=0;
tipoSum=0;
numCuadr=1; //a uno, para que el ultimo sea 9 :P
//aqui la entrada de teclado, paso de escribirla
//Aqui se empieza a comprobar si esta bien hecho
while(sumatorio!=45)
{
sumatorio=0;
//si ==0, comprobamos fila a fila
if(tipoSum=0)
{
for(j=0;j<9;j++)
{
sumatorio=sumatorio+sudoku[i][j];
}
i++;
if( (i==8)&&(j==8))//si ultima fila, pasamos a columnas
{
tipoSum=1;
}
}
//si ==1, comprobamos columna a columna
if(tipoSum=1)
{
for(i=0;i<9;j++)
{
sumatorio=sumatorio+sudoku[i][j];
}
j++;
if( (i==9)&&(j==9))
{
tipoSum=2;
}
}
//Si ==2, sumamos cuadrantes
if(tipoSum=2)
{
if(numeroCuadr==1)
{
i=0;
j=0;
}
if(numeroCuadr==2)
{
i=3;
j=0;
}
if(numeroCuadr==3)
{
i=6;
j=0;
}
if(numeroCuadr==4)
{
i=0;
j=3;
}
if(numeroCuadr==5)
{
i=3;
j=3;
}
if(numeroCuadr==6)
{
i=6;
j=3;
}
if(numeroCuadr==7)
{
i=0;
j=6;
}
if(numeroCuadr==8)
{
i=3;
j=6;
}
if(numeroCuadr==9)
{
i=6;
j=6;
}
for(i=i;i<i+3;i++)
{
for(j=j;j<j+3;j++)
{
sumatorio=sumatorio+sudoku[i][j];
}
}
j++;
numeroCuadr++;
}
}
if (sumatorio==45)
{
//saca por pantalla lo que quiras.
}
else
{
//idem
}
The_Punisher
30/03/2006, 20:16
No se mucho de programar pero supongo que comprobando filas Y columnas no haría falta comprobar el cuadrante 3x3 ¿no?
Aunque no sepa progrmar me interesa este tema porque me encanta sudoku:D
@Otto_xd: Cojonudo, gracias!!!! Ahora solo tengo q traducirlo a pascal, que no es muy dificil ^^
Tipo suma es el que indica si esta sumando filas y columnas, por lo que veo... Bueno eso yo lo hare de otra forma pero esta de PM ^^
ahora te lo comento, que estaba parlando por mvil :P
Mas o menos con eso sabes si esta bien o no el sudoku, espero que te sirva de ayuda.
Saludos.
PD.Si alguien es de la euitt de la upm, que tenga mucho cuidado con los 30 megas que nos dan por cuenta, me acava de petar una practica sobre nodos de comunicacion con bastantes lineas de codigo.
Yo he programado uno en C. Estas seguro que comprobando que suma 45 funciona? Mira que no te metan unos valores que den esa suma y pete...
Porque no lo haces "bien"? No cuesta tanto ^_^
Si aún estoy a tiempo de hecharte un cable dimelo, a ver si encuentro el código y te ayudo (se también pascal ;))
En principio, si todos los cuadrados estas rellenos, la suma debe de ser solamente 45, eso esta bien hecho, y es rapido.
Saludos
Hola, como práctica optativa me han mandado hacer un sudoku en Pascal, solo introducir los números y comprobar si esta bien resuelto. Total que he pensado en resolverlo por 45s (el sudoku está bien si todas las filas y columnas suman 45, es matemáticamente imposible que el sudoku esté bien si no cumple este requisito).
Como voy un poco a ciegas me gustaría que alguien que haya echo lo mio antes me eche un cable (o el ejercicio resuelto xD). recuerdo que trabajo en Pascal.
Gracias ^^
Esto es "si y solo si" o simplemente si?
Quiero decir... si lo resuelve un tontolaba y te casaca todo 0's y un 45... no sirve.
(Por el culo te la hinco xDDD no me podido aguantar).
< - >
Me parece a mi que la unica forma de comprobarlo de verdad es ke
para cada linea o para cada columna, o para cada matriz de 3x3 esten todos los numeros del 1 al 9 una y solo una vez.
Entonces esta tirado, es un simple for y que sume cada fila. Ahora que recuerde, lo que yo tengo implementado no es el chequeo,sino la resolución de sudokus, y tal y como lo tengo hecho yo, si esta mal construido no lo puede terminar (por otra parte es obvio :P)
Hola, llevo un par de dias tirando en la cama con 39 de fiebre delirando con que nintendo recuperaba el control del mercado de las consolas.
@GABS86: Mis disculas, esa misma tarde del jueves fue cuando me puse enfermo y no pude hacer el sudoku, ya contactare contigo por MSN cuando lo lleve encaminado...
@Azrael:
"Quiero decir... si lo resuelve un tontolaba y te casaca todo 0's y un 45... no sirve."
Repetir
Escribir Introduce el numer X de la columna Y
Leer Numero
Hast Numero>=1 Y Numero<=9
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions Inc. All rights reserved.