74 lines
2 KiB
JavaScript
74 lines
2 KiB
JavaScript
|
let 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"],
|
||
|
];
|
||
|
|
||
|
function isValidRow(board, row) {
|
||
|
let seen = new Set();
|
||
|
for (let i = 0; i < 9; i++) {
|
||
|
let num = board[row][i];
|
||
|
if (num !== 0 && seen.has(num)) {
|
||
|
return false;
|
||
|
}
|
||
|
seen.add(num);
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
function isValidColumn(board, col) {
|
||
|
let seen = new Set();
|
||
|
for (let i = 0; i < 9; i++) {
|
||
|
let num = board[i][col];
|
||
|
if (num !== 0 && seen.has(num)) {
|
||
|
return false;
|
||
|
}
|
||
|
seen.add(num);
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
function isValidSubgrid(board, startRow, startCol) {
|
||
|
let seen = new Set();
|
||
|
for (let row = startRow; row < startRow + 3; row++) {
|
||
|
for (let col = startCol; col < startCol + 3; col++) {
|
||
|
let num = board[row][col];
|
||
|
if (num !== 0 && seen.has(num)) {
|
||
|
return false;
|
||
|
}
|
||
|
seen.add(num);
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
function isValidSudoku(board) {
|
||
|
result: HTMLElement = document.getElementById("result");
|
||
|
|
||
|
for (let i = 0; i < 9; i++) {
|
||
|
if (!isValidRow(board, i) || !isValidColumn(board, i)) {
|
||
|
console.log("Board is Unvalid");
|
||
|
result.innerHTML = "Result: Unvalid";
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
for (let i = 0; i < 9; i += 3) {
|
||
|
for (let j = 0; j < 9; j += 3) {
|
||
|
if (!isValidSubgrid(board, i, j)) {
|
||
|
console.log("Board is Unvalid");
|
||
|
result.innerHTML = "Result: Unvalid";
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
console.log("Board is Valid");
|
||
|
result.innerHTML = "Result: Valid";
|
||
|
return true;
|
||
|
}
|