JavaScript
const invalidBoard = [
[5, 3, 4, 6, 7, 9, 8, 1, 2],
[6, 7, 2, 1, 9, 5, 3, 4, 7],
[6, 9, 8, 3, 4, 2, 7, 6, 5],
[8, 5, 9, 7, 6, 1, 4, 2, 1],
[4, 2, 6, 8, 5, 3, 7, 8, 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, 8, 8],
];
const validBoard = [
[5, 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],
];
function isValid(board) {
board.forEach((row, index) => {
if (!isValidRow(row)) {
console.log('invalid row: ' + row);
}
let column = [];
for (let i = 0; i < 9; i++) {
column.push(board[i][index]);
}
if (!isValidRow(column)) {
console.log('invalid column: ' + column);
}
});
let cell = [];
for (let i = 0; i < 9; i = +3) {
for (let j = 0; j < 3; j++) {
cell.push(board[i][j]);
}
debugger;
if (!isValidRow(cell)) {
console.log('invalid cell: ' + cell);
}
cell = [];
}
}
function isValidRow(row) {
return row.reduce((a, c) => {
a = a + c;
return a;
}, 0) === 45;
}
console.log(isValid(validBoard));