Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/05/2016, 16:04
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 9 meses
Puntos: 206
Respuesta: Validar juego sudoku

Los límites de tus FOR están mal. Tu sudoku tiene valores repetidos en dos verticales. También faltaría comprobar que los valores están entre 1 y 9, aunque se asume que esa comprobación quizá debería hacerse cuando el usuario intente meter un valor al sudoku.

Código Javascript:
Ver original
  1. function ValidarSudoku(s) {
  2.     for (var i = 0; i < 9; i++) {
  3.     for (var j = 0; j < 9; j++) {
  4.         for (var k = j + 1; k < 9; k++) {
  5.         if (s[i][j] == s[i][k]) {
  6.           console.log('H', s[i][j], i+'-'+j, i+'-'+k)
  7.             return false;
  8.         }
  9.         if (s[j][i] == s[k][i]) {
  10.             console.log('V', s[j][i], j+'-'+i, k+'-'+i)
  11.           return false;
  12.         }
  13.         if (s[Math.floor(i/3) * 3 + Math.floor(j/3)][i%3 * 3 + j%3] == s[Math.floor(i/3) * 3 + Math.floor(k/3)][i%3 * 3 + k%3]) {
  14.           console.log('C', s[Math.floor(i/3) * 3 + Math.floor(j/3)][i%3 * 3 + j%3], (Math.floor(i/3) * 3 + Math.floor(j/3))+'-'+ (i%3 * 3 + j%3), (Math.floor(i/3) * 3 + Math.floor(k/3))+'-'+(i%3 * 3 + k%3));
  15.             return false;
  16.         }
  17.       }
  18.     }
  19.   }
  20.  
  21.   return true;
  22. }

El console log dice [H]orizontal, valor repetido, coordenada 1, coordenada 2.
Los otros dos son [V]ertical y [C]asilla (mini cuadros de 3x3) contados de izquierda a derecha y arriba a abajo..