JSFiddle - React, Tailwind, and code Playground
by Vlad Rasenko
JavaScript
function validSolution (board) {
const scheme = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
const cells = []
for (const r of scheme) {
for (const c of scheme) {
const cell = []
for (const i of r) {
for (const j of c) {
cell.push(board[i][j])
}
}
cells.push(cell)
}
}
return cells.reduce((valid, cell) => {
const freeDigits = cell.reduce((digits, digit) => {
const index = digits.indexOf(digit)
if (index !== -1) digits.splice(index, 1)
return digits
}, [1, 2, 3, 4, 5, 6, 7, 8, 9])
console.log(freeDigits)
return valid && !freeDigits.length
}, true)
}
console.log(validSolution([[0, 3, 4, 6, 7, 8, 9, 1, 2],
[6, 7, 2, 1, 9, 5, 3, 4, 8],
[1, 9, 8, 3, 4, 2, 5, 6, 7],
[8, 5, 9, 7, 6, 1, 4, 2, 3],
[4, 2, 6, 8, 5, 3, 7, 9, 1],
[7, 1, 3, 9, 2, 4, 8, 5, 6],
[9, 6, 1, 5, 3, 7, 2, 8, 4],
[2, 8, 7, 4, 1, 9, 6, 3, 5],
[3, 4, 5, 2, 8, 6, 1, 7, 9]]))