Está en la página 1de 4

Algoritmos y Programacin II [75.

41] Trabajo Prctico [Indiv] N 1


Ctedra Lic. Gustavo Carolo Sudoku Solver
2 Cuatrimestre 2016 Fecha de entrega:16/09/2016

Trabajo Prctico [Individual] N 1


Sudoku Solver

Introduccin
Objetivo
Definicin de TDAs
Ejecucin
Referencias

Introduccin
Sudoku (en japons: , sdoku) es un juego matemtico que se public por primera vez a
finales de la dcada de 1970 y se populariz en Japn en 1986, dndose a conocer en el
mbito internacional en 2005 cuando numerosos peridicos empezaron a publicarlo en su
seccin de pasatiempos.
El objetivo del sudoku es rellenar una cuadrcula de 9 9 celdas (81 casillas) dividida en
subcuadrculas de 3 3 (tambin llamadas "cajas" o "regiones") con las cifras del 1 al 9
partiendo de algunos nmeros ya dispuestos en algunas de las celdas.[1]
Objetivo
Armar un programa que dado una cuadrcula de sudoku especificado por lneas, encuentre
TODAS las soluciones posibles (Si existen). Se contemplan 3 casos.
Existe una nica solucin, por lo que la cuadrcula es determinada
Existe ms de 1 solucin, por lo que se considera que la cuadrcula es
indeterminada.
No existe ninguna solucin, por lo que se considera que la cuadrcula es
incompatible.
Para resolver el problema se sugiere implementar Backtracking(o en castellano, vuelta
atrs)[2] como estrategia de solucin.
La misma consiste en ir explorando una solucin, y ante la imposibilidad de continuar,
ejecuta la vuelta atrs para seguir por otro camino, descartando de forma temprana grupos
de soluciones invlidas.
Esto permite en una ejecucin explorar TODAS las soluciones posibles a un problema dado.

Definicin de TDAs

#defineMAX_SOL1000
typedefintgrid_t[9][9];
typedefgrid_tsolution_array_t[MAX_SOL];

typedefstructadt_sudoku_solver{
grid_tgrilla;
intsolution_count;
solution_array_tvec_sol;
}solver_t;

intsolver_create(solver_t*);
intsolver_destroy(solver_t*);
intsolver_load_matrix(solver_t*,grid_t);
intsolver_solve(solver_t*);
intsolver_get_sol(solver_t*,solution_array_t);
Ejecucin
La sintaxis de ejecucin debe ser la siguiente
./tpinput

Donde tp es el archivo binario compilado del presente trabajo prctico y input es la ruta
completa con nombre del archivo que contiene el sudoku a resolver.

En los archivos, la grilla est expresada como CARACTERES CONSECUTIVOS, donde .


representa una posicin vaca de la grilla, y los datos representan la carga de la grilla por
FILAS.

Archivos de ejemplo

Archivo Vlido: valid.txt


..2.3...8.....8....31.2.....6..5.27..1.....5.2.4.6..31....8.6.5.......13.
.531.4..

Archivo Indeterminado: indeterminate.txt


.39...12....9.7...8..4.1..6.42...79...........91...54.5..1.9..3...8.5....
14...87.

Archivo Incompatible: incompattible.txt


.9.3....1....8..46......8..4.5.6..3...32756...6..1.9.4..1......58..2....2
....7.6.

Ejecucin Vlida
./tpvalid.txt
Cantidaddesoluciones:1
672435198549178362831629547368951274917243856254867931193784625486592713
725316489

Ejecucin Indeterminada (K soluciones posibles)
./tpindeterminate.txt

Cantidaddesoluciones:2
439658127156927384827431956342516798785294631691783542578149263263875419
914362875
439658127156927384827431956642513798785294631391786542578149263263875419
914362875

Ejecucin Incompatible (No hay soluciones posibles)

./tpincompattible.txt

Cantidaddesoluciones:0

Referencias
[1] h
ttps://es.wikipedia.org/wiki/Sudoku
[2] h ttps://es.wikipedia.org/wiki/Vuelta_atr%C3%A1s

También podría gustarte