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; }