/**
* @param {character[][]} board
* @return {boolean}
*/
var isValidSudoku = function (board) {
for (let i = 0; i < 9; i++) {
for (let j = 0; j < 9; j++) {
const p = board[i][j]
if (p === '.') {
continue
} else {
for (let e1 = 8; e1 > j; e1--) {
if (board[i][e1] === p) {
return false
}
}
for (let e2 = 8; e2 > i; e2--) {
if (board[e2][j] === p) {
return false
}
}
const t1 = i + 3 - i % 3
const t2 = j + 3 - j % 3
for (let p2 = j + 1; p2 < t2; p2++) {
if (board[i][p2] === p) {
return false
}
}
for (let p1 = i + 1; p1 < t1; p1++) {
for (let p2 = t2 - 3; p2 < t2; p2++) {
if (board[p1][p2] === p) {
return false
}
}
}
}
}
}
return true
};