Analisis Sudoku
1. Verificar si un sudoku está correcto:
* Parámetros: matriz 9X9 de enteros (llena)
* Salida: bool – indicando si está o no correcto
* Lógica:
Se recorreinicialmente todas las filas de la matriz, validando que la suma de cada una de las filas sea 45.
Se repite el proceso recorriendo las columnas y verificando nuevamente que la suma de cada columna sea45.
Si en algún momento la suma de alguna fila o columna es diferente de 45, inmediatamente se devuelve un false, indicando que el sudoku está incorrecto.
2. Resolver un sudoku
*Parámetros: matriz 9X9 con valores enteros y cantidad aleatoria.
* Salida: [][] – matriz llena correctamente
* Lógica:
Clases:
* Nodo:
Atributos: int fila, int columna (posición en la matriz),ArrayList <Integer> posibles (todos los números posibles en este campo)
* Arbol:
Atributos: Nodo [] hijos (todos los campos de la matriz que están vacíos)
Parámetros: int numHijos(tamaño del arreglo de hijos(campos vacios)
Métodos:
* agregarPosibles(int,int):ArrayList
Recibe la fila y la columna de la posición en la que se encuentra el espacio vacío en la matriz.
Serecorre toda la fila de la matriz = a la fila que recibe como parámetro, si un número X de (1-9) no está en la fila, igualmente, se recorre la columna, si X tampoco se encuentra en la columna, se revisa elcuadrante en el que se encuentra el campo vacío, finalmente, si X no se encuentra dentro del cuadrante, X se agrega a la lista de posibles del campo.
Cuando se haya realizado el proceso contodos los números (1-9) devuelve la lista de posibles.
* buscarPosibles(int):void
Crea un árbol con número de hijos = param, recorre toda la matriz buscando los campos vacíos, si es vacío seagrega a la lista de hijos del árbol, enviando como parámetros la posición de este campo (fila, columna) y su lista de posibles que retorna el método agregarPosibles.
* reducirPosibles():void...
Regístrate para leer el documento completo.