Sudoku

by alex_o

JavaScript

var t = [ [1,2,3,4,5,6,7,8,9],
					[1,2,3,4,5,6,7,8,9],
          [1,2,3,4,5,6,7,8,9],
          [1,2,3,4,5,6,7,8,9],
          [1,2,3,4,5,6,7,8,9],
          [1,2,3,4,5,6,7,8,9],
          [1,2,3,4,5,6,7,8,9],
          [1,2,3,4,5,6,7,8,9],
          [1,2,3,4,5,6,7,8,9] ];
          
var t1 = [ [7,5,9,1,8,2,4,6,3],
					 [8,1,6,3,4,7,5,2,9],
           [2,3,4,5,6,9,7,1,8],
           [9,6,7,2,5,8,3,4,1],
           [1,4,8,7,3,6,2,9,5],
           [3,2,5,9,1,4,6,8,7],
           [5,8,2,6,7,1,9,3,4],
           [4,9,3,8,2,5,1,7,6],
           [6,7,1,4,9,3,8,5,2]];
          
function equals45(n){
  return n == 45;
}
function hasEquals(arr, el){
 if(arr.indexOf(el) == -1) return false;
 return true
}

function validSolution(board){
  var sum_h = [0,0,0,0,0,0,0,0,0],
      sum_v = [0,0,0,0,0,0,0,0,0],
      sum_square = [[0,0,0],[0,0,0],[0,0,0]],
      h=[], v=[];
      
  for (var i=0;i<9;i++){
    for (var j=0;j<9;j++){
    	if( board[i][j] <=0 || board[i][j] > 9) return false;
      if(!h[i]) h[i] = [];
      if(!v[j]) v[j] = [];
      if(!hasEquals(h[i], board[i][j]) && !hasEquals(v[j], board[i][j])){
      	h[i].push(board[i][j]);
        v[j].push(board[i][j]);
      }
      else{
      	return false;
      }
      sum_square[Math.floor(i/3)][Math.floor(j/3)] += board[i][j];
    }
  }
  for (var i=0;i<3;i++) if (!sum_square[i].every(equals45)) return false;
  return true;
}

console.log(validSolution(t1));