SudokuSolver/JavaScript Solution/yourScript.js

74 lines
2 KiB
JavaScript
Raw Normal View History

2024-04-02 11:44:12 +02:00
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;
}