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));