Вы находитесь на странице: 1из 4

UNIVERSIDAD DEL VALLE ESCUELA DE INGENIERA DE SISTEMAS Y COMPUTACIN FUNDAMENTOS DE ANLISIS Y DISEO DE ALGORITMOS ANDRS FERNANDO VELASCO Miniproyecto

1 - Octubre de 2011
1. Introduccin El presente miniproyecto tiene como objetivo principal enfrentar a los estudiantes del curso al diseo de la solucin de un problema, utilizando estructuras de datos. Adems, se pretende alcanzar los siguientes objetivos especficos: Realizar anlisis de complejidad de las operaciones que permiten solucionar el problema. Conocer los tiempos de cmputo que se obtienen al incorporar las estructuras de datos en la solucin de problemas. Implementar en un lenguaje de alto nivel las estructuras de datos y una solucin funcional del problema. 2. El problema1 El Sudoku se crea a partir de los trabajos del matemtico suizo Leonhard Euler (1707-1783) cuando se encontraba trabajando en la demostracin de un conjunto de teoremas acerca del clculo de probabilidades. Sin embargo, el Sudoku visto como un juego, tiene su origen en Nueva York a finales de 1970. Para entonces no se llamaba Sudoku sino simplemente Number Place (El lugar de los nmeros), siendo publicado en la revista Math Puzzles and Logic Problems de la empresa especializada en rompecabezas Dell. Posteriormente Nikoli, una empresa japonesa especializada en pasatiempos para prensa, lo export a Japn publicndolo en el peridico Monthly Nikolist en abril de 1984 bajo el ttulo "Suji wa dokushin ni kagiru", que se puede traducir como "los nmeros deben estar solos" y que posteriormente se abreviara a Sudoku (su=nmero, doku=solo). Tras pequeas variaciones en cuanto a las reglas que se deben seguir en el juego, se obtuvo el Sudoku tal como se conoce hoy y fue a partir de la prensa japonesa que se inici su salto al resto del mundo. Hoy en da existen mltiples variantes de este juego, una de las cuales es el Sohei (o Isis), que entrelaza 4 sudokus, y que ser el objeto de estudio en este miniproyecto. 3. Descripcin del juego. El Sudoku se presenta como una tabla de 99, compuesta por subtablas de 33 denominadas "regiones". Al inicio del juego algunas celdas pueden contener nmeros. El objetivo es rellenar las celdas vacas con un nmero en cada una de ellas, de tal forma que cada fila, columna y regin contenga los nmeros de 1 a 9 slo una vez. En la figura 1 se muestra un ejemplo de un posible estado inicial del juego.

Tomado de http:sudoku.com

Figura 1 Los nmeros que hacen parte del estado inicial no se pueden modificar. El juego inicia al seleccionar en cada jugada una posicin del tablero (que no tenga nmeros dados en la configuracin inicial) e indicar el nmero a colocar. Se debe verificar que el nmero que se desea colocar no est ni en la fila, ni en la columna ni en la regin seleccionada. Adems, el nmero debe estar entre 1 y 9 (ambos incluidos). El juego termina cuando cada posicin del tablero tiene un nmero y cada fila, columna y regin contiene los nmeros del 1 al 9. En la figura 2 se muestra un ejemplo de estado final del juego.

Figura 2 En cuanto al Sohei, este consiste en resolver cuatro sudokus entrelazados, tal como se muestra en la figura 3.

Figura 3

4. Consideraciones para la solucin del problema La solucin planteada debe tener en cuenta cada uno de los siguientes aspectos: El tablero se maneja como un arreglo de 21x21. Se debe tener una interfaz grfica que permita ver el estado actual del juego. La aplicacin debe solicitar el ingreso de una configuracin inicial. Para esto, la informacin acerca de los nmeros y sus posiciones se debe leer de un archivo que tiene el siguiente formato: El archivo debe tener 21 lneas. Los nmeros en cada lnea se colocan uno seguido de otro y en caso de que se trate de una casilla vaca se coloca el smbolo guin (-). Por ejemplo, el archivo para el ingreso del tablero inicial mostrado en la figura 3 es: ------29-7-4-81-------------65-34-----------------9-----------------------------------78--3--59-------------36821-------5---2-1-------5-7---8 7---1-----7-----3---5 -8---3---------5---642---1---------3---24 --3-57-8-----9-42-5-65---2---------9---37 -4---6---------8---72---9-----9-----1---3 3---4-6-------3-4---9 --------97582-------------52--1--98-----------------------------------8-----------------21-75-------------75-9-2-31----- Cuando el usuario desee insertar un nmero n en la fila f y columna c, se debe verificar que no est ni en la fila f, ni en la columna c ni en la regin correspondiente del sudoku respectivo, teniendo especial cuidado con las regiones compartidas. En caso de estarlo, se muestra un mensaje indicando que no se hizo el ingreso del nmero al tablero, en caso contrario, se muestra en el tablero el nmero y se considera una jugada vlida. Cada vez que se realice una jugada vlida se debe verificar si se complet el Sudoku. En tal caso se debe mostrar un mensaje. La aplicacin debe tener una opcin Deshacer que permita eliminar la ltima jugada vlida. Se podr aplicar tantas veces esta accin como jugadas vlidas previas se hayan realizado. Se debe incluir la opcin Rehacer que permita realizar un movimiento que se haba eliminado, esto es, una jugada sobre la que se haba aplicado Deshacer. La aplicacin debe tener una opcin Jugada sugerida dada una fila f y una columna c seleccionada por el usuario. La sugerencia puede consistir, por ejemplo, en un nmero que no est ni en la fila f, ni en la columna c ni en la regin correspondiente y que no haya sido eliminado previamente de esa posicin. Utilice otras estrategias adicionales que puedan llevar a completar una solucin. La aplicacin debe tener un historial de todas las jugadas realizadas. Incluidas las de Deshacer y Rehacer. Se debe incluir una opcin Ver Jugadas que permita ver para cada jugada realizada la posicin, el nmero y el tipo de accin, esto es, Deshacer, Rehacer o Nueva.

5. Entrega y sustentacin El trabajo debe ser presentado por grupos de hasta 4 personas.

Se debe realizar un anlisis formal de complejidad de cada una de las operaciones desarrolladas. Asegrese de mostrar los clculos necesarios para obtener el tiempo computacional de las operaciones. Debe entregar este anlisis en un archivo llamado Anlisis.pdf Entregue el cdigo fuente del programa. El miniproyecto se debe entregar el da sbado 29 de octubre de 2011. La sustentacin se realizar en la siguiente clase. 6. Calificacin Se considerarn los siguientes porcentajes: 40% Anlisis y diseo -Definicin de las operaciones -Incorporacin de las estructuras de datos para la solucin del problema -Anlisis formal de complejidad 30% Implementacin -Calidad de la interfaz grfica -Facilidad de uso 30% Sustentacin -Explicacin operativa de la aplicacin -Justificacin de las estructuras seleccionadas para la solucin y dems decisiones tenidas en cuenta

Вам также может понравиться