JSFiddle - React, Tailwind, and code Playground

by Dmitri Ganenco

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