Problemas codigo sudoku

adrian benavides
13 de Noviembre del 2011
Buenas a todos, verán, tengo que hacer para el cole un programa que resuelva sudokus, y estoy estancado en la creación de un par de funciones, básicamente porque es mi primera asignatura de programaciony no estoy muy familiarizado con esto, sobretodo a la hora de implementar las funciones...

La practica consta de 3 partes, de las cuales tengo hecha la primera.
En esta primera parte he definido las siguientes funciones:
1.int primera_fila_grup (int x, int y)
2.int ultima_fila_grup (int x, int y)
3.int primera_columna_grup (int x, int y)
4.int ultima_columna_grup (int x, int y)
5.void llenar_posibles (vector p)
6.void eliminar_posible (vector p, int k)
7.bool contiene_posible (vector p, int k)
8.int numero_posibles (vector p)
9.int primer_possible (vector p)

Las 4 primeras sirven para situar la casilla a solucionar
Las restantes, dado un vector de booleanos de 9 posiciones, indican que numero puede ser la solucion de una determinada casilla.
Hasta aqui lo tengo todo, ahora en la parte 2 me piden unas funciones que no entiendo muy bien y que espero que podais ayudarme:
1.Calcular los dígitos posibles por una casilla. Procederemos a partir de todos los dígitos posibles (inicializar la tabla con todos los valores a true con la acción llenar_posibles), eliminando a continuación todos los que haya a la misma fila, después los que haya a la misma columna y finalmente eliminar del vector los que estén a la misma grupo (usando la función eliminar_posible) .

void posibles(vector >, int f, int c,vector pos)

dónde f es la fila, c es la columna, vector > t es la tabla del Sudoku y pos es el vector de posibles.
Para construir esta función, tendréis que ayudaros de las funciones primera_fila_grupo, ultima_fila_grupo, primera_columna_grupo y ultima_columna_grupo para saber dentro de qué zona del tablero tendréis que hacer las comprobaciones.


2. Escribid una acción que llene la matriz que contendrá el Sudoku – una matriz de 9x9, pidiendo los dígitos por el teclado separándolos por blancos y poniendo 0 a las casillas vacías.

void llenar (vector > t)

3. Escribíd una función que nos muestre el contenido de la mesa creada con la acción anterior. La matriz tiene que tener este formato:

xx|xx|xx
xx|xx|xx
--+--+--
xx|xx|xx
xx|xx|xx
Pero en una matriz de 9x9

void escribir (vector > t)


4. Escribid una función que dada la matriz del Sudoku, indique si la parrilla tiene al menos una casilla vacía. Esta función nos servirá para saber si hemos acabado la partida.

bool quedan_vacías (vector > t)


5. Haced un programa principal que pruebe las acciones/funciones anteriores.


La 4 la tengo, la 2 y la 3 tengo una idea de como hacerlas pero no consigo dar con la solucion correcta y la 1 no tengo ni idea. Espero que me podais iluminar un poco, estoy colapsado ya

saludos y gracias!