Skip to content

Instantly share code, notes, and snippets.

@jadeallencook
Created September 7, 2017 16:56
Show Gist options
  • Save jadeallencook/bf9fa35926ed96c7b897d060d3bedbc5 to your computer and use it in GitHub Desktop.
Save jadeallencook/bf9fa35926ed96c7b897d060d3bedbc5 to your computer and use it in GitHub Desktop.
Validate a sudoku board by passing this method the board numbers (left to right) in an array.
function validateSudoku(data) {
// [] for rows/colums
var board = [];
// iterate over the (r)ows
for (var r = 0; r < 9; r++) {
// start for (c)olumns
var start = r * 9;
// stores current row data
var build = [];
// iterate over the (c)olumns
for (var c = start; c < (start + 9); c++) {
// add row data
build.push(data[c]);
}
// insert row [] into board
board.push(build);
}
// test board values
var valid = true;
// iterate over the (r)ows
for (var r = 0; r < 9; r++) {
// init row count
var rowCheck = 0;
// iterate over the (c)olumns
for (var c = 0; c < 9; c++) {
// cache current value
var value = board[r][c];
// init column count
var columnCheck = 0;
// add up column
for (var x = 0; x < 9; x++) {
columnCheck += board[x][c];
}
// add up row
rowCheck += board[r][c]
// test column
if (columnCheck != 45) return false;
}
// test row
if (rowCheck != 45) return false;
}
return true;
}
// examples (test1: false & test2: true)
var test1 = validate([9, 7, 6, 3, 1, 4, 2, 5, 8, 8, 5, 4, 9, 6, 2, 7, 1, 3, 9, 1, 3, 8, 7, 5, 2, 6, 4, 4, 6, 8, 1, 2, 7, 3, 9, 5, 5, 9, 7, 4, 3, 8, 6, 2, 1, 1, 3, 2, 5, 9, 6, 4, 8, 7, 3, 2, 5, 7, 8, 9, 1, 4, 6, 6, 4, 1, 2, 5, 3, 8, 7, 9, 7, 8, 9, 6, 4, 1, 5, 3, 2]);
var test2 = validate([2, 7, 6, 3, 1, 4, 9, 5, 8, 8, 5, 4, 9, 6, 2, 7, 1, 3, 9, 1, 3, 8, 7, 5, 2, 6, 4, 4, 6, 8, 1, 2, 7, 3, 9, 5, 5, 9, 7, 4, 3, 8, 6, 2, 1, 1, 3, 2, 5, 9, 6, 4, 8, 7, 3, 2, 5, 7, 8, 9, 1, 4, 6, 6, 4, 1, 2, 5, 3, 8, 7, 9, 7, 8, 9, 6, 4, 1, 5, 3, 2]);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment