Pseudocodigo De Un Sudoku
Enviado por ELBEIBI1930 • 19 de Noviembre de 2014 • 498 Palabras (2 Páginas) • 995 Visitas
Fun es_factible (i, j : Nat; sol[1..9, 1..9] de 0..9) DEV Bool
Var
valido : Bool;
k,l: Nat;
FinVar;
valido := True;
k := 1;
Mientras (k <= 9 ^ valido) Hacer //Comprobamos la columna
Si ( sol[i, j] = sol[k, j] ^ k != i ){
Valido := Falso;
FinSi;
k := k + 1;
FinMientras;
l := 1;
Mientras (l <= 9 ^ valido) Hacer //Comprobamos la fila
Si ( sol[i, j] = sol[i, l] ^ l != j ){
Valido := Falso;
FinSi;
l := l + 1;
FinMientras;
// Lo anterior podría compactarse así, en un solo while que comprueba filas y columnas..
// Mientras (k<=9 ^ valido) Hacer
// Si ( (sol[i, j] = sol[k, j] ^ k != i) v (sol[i, j] = sol[i, k] ^ k != j))
// Valido := Falso;
// FinSi;
// FinMientras;
k := correspondencia3x3(i);
l := correspondencia3x3(j); //Comprobamos el subgrupo de 3x3
Mientras ( k < correspondencia3x3(i) + 3 ^ valido ) Hacer //por razones de eficiencia puede antes de esta etapa, asignar a una variable
Mientras ( l < correspondencia3x3(j) + 3 ^ valido) Hacer // el valor de correspondencia3x3(x) sea x=i o = j; así se evitan 2 llamadas
Si ( sol[i, j] = sol[k, l] ^ i != k ^ j != l) Entonces // a dicha función traduciéndose en mejor eficiencia.
valido := Falso;
FinSi;
l := l + 1;
FinMientras;
k := k + 1;
l := correspondencia3x3(j);
FinMientras;
Devolver valido;
FinFun;
...