var isValidSudoku = function (board) {
for (var i = 0; i < 9; i++) {
var map = {}
for (var j = 0; j < board[i].length; j++) {
if (board[i][j] === '.') {
continue
}
if (map[board[i][j]]) {
return false
} else {
map[board[i][j]] = 1
}
}
}
for (var i = 0; i < 9; i++) {
var map = {}
for (var j = 0; j < board[i].length; j++) {
if (board[j][i] === '.') {
continue
}
if (map[board[j][i]]) {
return false
} else {
map[board[j][i]] = 1
}
}
}
function between(value, range) {
return value >= range[0] && value <= range[1]
}
var mapArr = new Array(9).fill(0).map(() => ({}))
for (var i = 0; i < 9; i++) {
for (var j = 0; j < 9; j++) {
let value = board[i][j]
if (value === '.') {
continue
}
let rowIndex = i + 1
let colIndex = j + 1
if (between(rowIndex, [1, 3]) && between(colIndex, [1, 3])) {
mapArr[0][value] = (mapArr[0][value] || 0) + 1
}
if (between(rowIndex, [1, 3]) && between(colIndex, [4, 6])) {
mapArr[1][value] = (mapArr[1][value] || 0) + 1
}
if (between(rowIndex, [1, 3]) && between(colIndex, [7, 9])) {
mapArr[2][value] = (mapArr[2][value] || 0) + 1
}
if (between(rowIndex, [4, 6]) && between(colIndex, [1, 3])) {
mapArr[3][value] = (mapArr[3][value] || 0) + 1
}
if (between(rowIndex, [4, 6]) && between(colIndex, [4, 6])) {
mapArr[4][value] = (mapArr[4][value] || 0) + 1
}
if (between(rowIndex, [4, 6]) && between(colIndex, [7, 9])) {
mapArr[5][value] = (mapArr[5][value] || 0) + 1
}
if (between(rowIndex, [7, 9]) && between(colIndex, [1, 3])) {
mapArr[6][value] = (mapArr[6][value] || 0) + 1
}
if (between(rowIndex, [7, 9]) && between(colIndex, [4, 6])) {
mapArr[7][value] = (mapArr[7][value] || 0) + 1
}
if (between(rowIndex, [7, 9]) && between(colIndex, [7, 9])) {
mapArr[8][value] = (mapArr[8][value] || 0) + 1
}
}
}
for (var i = 0; i < mapArr.length; i++) {
for (let key in mapArr[i]) {
if (mapArr[i][key] > 1) {
return false
}
}
}
return true
};
var board =
[["5", "3", ".", ".", "7", ".", ".", ".", "."]
, ["6", ".", ".", "1", "9", "5", ".", ".", "."]
, [".", "9", "8", ".", ".", ".", ".", "6", "."]
, ["8", ".", ".", ".", "6", ".", ".", ".", "3"]
, ["4", ".", ".", "8", ".", "3", ".", ".", "1"]
, ["7", ".", ".", ".", "2", ".", ".", ".", "6"]
, [".", "6", ".", ".", ".", ".", "2", "8", "."]
, [".", ".", ".", "4", "1", "9", ".", ".", "5"]
, [".", ".", ".", ".", "8", ".", ".", "7", "9"]]
var board2 =
[["8","3",".",".","7",".",".",".","."]
,["6",".",".","1","9","5",".",".","."]
,[".","9","8",".",".",".",".","6","."]
,["8",".",".",".","6",".",".",".","3"]
,["4",".",".","8",".","3",".",".","1"]
,["7",".",".",".","2",".",".",".","6"]
,[".","6",".",".",".",".","2","8","."]
,[".",".",".","4","1","9",".",".","5"]
,[".",".",".",".","8",".",".","7","9"]]
console.log(isValidSudoku(board2));