Created
September 7, 2017 16:56
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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