S U D O K U
El presente proyecto se lo realizo con el fin de comprender el capítulo de Teoría de Juegos en la materia de Inteligencia Artificial, con el cual buscamos implementar en la maquina la estrategia que un ser humano utiliza para resolver un determinado problema.
El proyecto sudoku fue desarrollado bajo la plataforma java 1.6, se utilizo la programación orientada a objetos y una metodología de desarrollo XP (extreme programming).
El sudoku se presenta como una tabla de 9×9, compuesta por subtablas de 3×3 denominadas regiones (también se llaman “cajas” o “bloques”).
- El objetivo es llenar las celdas vacías que, con un numero en cada uno de ellos, de tal forma que cada columna, fila y bloque o región contengan los números del uno al nueve solo una vez.
- No se debe repetir ninguna cifra en una misma fila, columna o bloque
Estrategia de Solución:
Tomamos un numero del uno al nueve y verificamos si este se encuentra en el bloque, si no se encuentra procedemos a verificar si se encuentra en la filas y columnas adyacentes.
Una vez que verificamos procedemos a colocar el número en la única posibilidad que tenemos.
- Esta operación se la realiza con el mismo número elegido, recorriendo cada una de las cajas.
- Realizamos toda la operación descrita anteriormente, teniendo en cuenta que los números en los bloques a analizar no se repitan en las filas y columnas.
- Si el número no está en el bloque se lo coloca y si ya esta se pasa a la siguiente caja, el número elegido debe estar solo una vez en la caja.
- Esta operación se realiza con los números que faltan y en cada caja.
- En caso que haya dos o más posibilidades para colocar un número se prueba con todas las posibilidades y se coloca el número en la posición más prometedora o en la casilla que dé el resultado óptimo.
REGLAS
- Verificar si el número generado se encuentra en el bloque.
si(!verificaBloque(bloque, numero)) entonces
verificarColumna()
fin si
- Verificar si el número generado se encuentre en la columna.
si(!verificaColumna(bloques[][], numero, columna, caja)) entonces
verificaFila()
fin si
- Verificar si el número generado se encuentre en la fila.
si(!verificaFila (bloques[][], numero, fila, caja)) entonces
posicion[] =posibilidadesDeMovimiento (bloques[][], vacias, cont)
fin si
posicion[] = posibilidadesDeMovimiento (bloques[][], vacias, cont)
- Si el número no se encuentra en el bloque, ni la columna, ni la fila se lo asigna.
bloques[posicion[0]][ posicion[1]].caja[posicion[2]][ posicion[3]]=numero
tablaLlena(bloques[])
para i=0, i<bloques.tamaño,i++ hacer
para j=0, i<bloques.tamaño,i++ hacer
para k=0, i<bloques.tamaño,i++ hacer
para l=0, i<bloques.tamaño,i++ hacer
si(bloques[i][j].cajas[k][l])!=vacio entonces
lleno=verdadero
fin si
fin para
fin para
fin para
fin para
EQUIPO DE DESARROLLO
NOMBRE: Milton Dario Quizhpe Villavicencio.
TÍTULO: Estudiante de Ingeniería en Sistemas
e-mail: milton_qui25@hotmail.com
TELÉFONO: 072574313 – 089175441
CIUDAD: Loja – Ecuador
EXPERIENCIA:
• Coordinador del proyecto de Análisis y Diseño de Sistemas I
• Desarrollo del Sistema de Gestión FarmaSystem de la empresa Farmalemana C.A.
• Coordinador del Proyecto de Administración de Centros de Cómputo de la Unidad Educativa “La Dolorosa”
• Coordinador del proceso de Reingeniería del Sistema FarmaSystem.
• Coordinador del proyecto Lenguaje Surikata 2009 y su compilador.
NOMBRE: Miguel Iguasnia
TÍTULO: Estudiante de Ingeniería en Sistemas
e-mail: cjmavison@hotmail.com
TELÉFONO: 091752387 – 097321597
CIUDAD: Loja – Ecuador
EXPERIENCIA:
• Desarrollo del Sistema de Gestión Académica para el Colegio Técnico Gonzanamá
• Desarrollo del Sistema de Gestión FarmaSystem de la empresa Farmalemana C.A.
• Desarrollo de Reingeniería del Sistema FarmaSystem
• Desarrollo del Lenguaje Surikata 2009 y su Compilador.
NOMBRE: Jorge Zaruma
TÍTULO: Estudiante de Ingeniería en Sistemas
e-mail: jorgfergeo@hotmail.com
TELÉFONO: 086734481
CIUDAD: Loja – Ecuador
EXPERIENCIA:
• Analista del proyecto de Análisis y Diseño de Sistemas I
• Analista del Sistema de Gestión FarmaSystem de la empresa Farmalemana C.A.
• Analista del Proyecto de Administración de Centros de Cómputo de la Unidad Educativa “La Dolorosa”
• Analista del proceso de Reingeniería del Sistema FarmaSystem.
• Analista del Proyecto Lenguaje Surikata 2009 y su compilador.
NOMBRE: Jorge Jiménez
TÍTULO: Estudiante de Ingeniería en Sistemas
e-mail: jpjimenez_757@yahoo.es
TELÉFONO: 072547910 – 097356395
CIUDAD: Loja – Ecuador
EXPERIENCIA:
• Diseñador del proyecto de Análisis y Diseño de Sistemas I
• Diseñador del Sistema de Gestión FarmaSystem de la empresa Farmalemana C.A.
• Diseñador del Proyecto de Administración de Centros de Cómputo de la Unidad Educativa “La Dolorosa”
• Diseñador del proceso de Reingeniería del Sistema FarmaSystem.
• Diseñador del Proyecto lenguaje Surikata 2009 y su compilador.
INTERESES DEL GRUPO
- Desarrollo Web.
- Programacion PHP.
- Redes Inalambricas.
- Programacion Orientada a Aspectos.
Links para descargar el código:
En SourceForget:
DOWNLOAD (el link está pendiente)
En Mediafire:
M&J Sudoku
Instalador de M&J SUDOKU