36-valid-sudoku
DevGod needs to write a blog entry for this problem!
/**
* @param {character[][]} board
* @return {boolean}
*/
var isValidSudoku = function(board) {
let row = {};
let col = {};
let cell = {};
//Turn board matrix into some hash maps
for(let A in board){
for(let B in board[A]){
if(board[A][B] != "."){
if(row[A] === undefined){row[A] = [];}
if(col[B] === undefined){col[B] = [];}
if(cell[3*Math.floor(B/3)+Math.floor(A/3)] === undefined){cell[3*Math.floor(B/3)+Math.floor(A/3)] = [];}
row[A].push(board[A][B]);
col[B].push(board[A][B]);
cell[3*Math.floor(B/3)+Math.floor(A/3)].push(board[A][B]);
}
}
}
//Run checks
for(let Z of Object.values(row)){
const set = new Set(Z);
if(Z.length != set.size){
return false;
}
}
for(let Z of Object.values(col)){
const set = new Set(Z);
if(Z.length != set.size){
return false;
}
}
for(let Z of Object.values(cell)){
const set = new Set(Z);
if(Z.length != set.size){
return false;
}
}
return true;
};