Open joecabezas opened 7 years ago
Así es, esa parte del código es la que revisa que las casillas estén bien: La variable i indica la columna, y j indica la fila.
Las variables con prefijo "rs" indican restricción de sumas: la suma de los elementos de cada columna debe ser 45, y la suma de los elementos de cada cuadrícula debe ser 45.
Las variables con prefijo "rp" indican restricción de productos: el producto de los elementos de cada columna debe ser 362880 (9!) y el de los elementos de cada cuadrícula debe ser 362880.
Las variables con prefijo "rea" indican restricción de elementos ausentes: cada número del 1 al 9 que esté ausente en cada columna o cuadrícula cuenta como un punto.
Las palabras que vienen después, para cada prefijo tenemos las palabras Cuad y Columna, que sirven para verificar las restricciones en columnas o cuadrículas.
Primero hice la revisión de las restricciones de las columnas, y luego el de las cuadrículas. Por eso decidí aprovechar el loop de las columnas y meter ahí todo ese código repetido que permite verificar las sumas, productos y ausencia de elementos en las cuadrículas.
Estoy seguro que debe haber una forma más concisa de expresar las líneas 228 -> 270. Ya sea metiéndolas en un loop distinto, o encontrando una fórmula matemática que usando los contadores "i" e "y" permita saber en qué cuadrícula uno se encuentra.
me refiero a que hay una linea en especifico que se repite bastante que podrias facilmente encapsular
Correcto, pero al menos yo no lo veo tan fácil de encapsular. No es llegar y sacar esa línea de afuera del if, porque la variable "valor_casilla" depende del valor de la variable "i" y "j". ¿Se te ocurre como sacarla? puedes enviar la propuesta en un pull request!
tu lo has dicho, pasa los indices i, j como parte del metodo encapsulador, y la matriz, lo que importa es el contenido, no los indices
https://github.com/KarlHeitmann/algoritmo-genetico-resolucion-sudoku/blob/a4fb58b9f2ce2c450d840d390d0c14f2c692bffe/poblacion.rb#L232
parece que estan duplicando codigo varias veces cuando esto podria ser un metodo mas