implement SudokuSolver.validate() method and write unit tests for method
This commit is contained in:
@@ -8,19 +8,73 @@ class SudokuSolver {
|
||||
|
||||
checkRowPlacement(puzzleString, row, column, value) {
|
||||
|
||||
// rows
|
||||
const rows = {
|
||||
A: [],
|
||||
B: [],
|
||||
C: [],
|
||||
D: [],
|
||||
E: [],
|
||||
F: [],
|
||||
G: [],
|
||||
H: [],
|
||||
I: [],
|
||||
};
|
||||
|
||||
// rowKeys
|
||||
const rowKeys = Object.keys(rows);
|
||||
|
||||
// split puzzle strings and assign row values for each row
|
||||
rowKeys.forEach((key, index) => {
|
||||
|
||||
const start = index * 9;
|
||||
const end = start + 9;
|
||||
|
||||
const rowValues = puzzleString.slice(start, end).split('');
|
||||
|
||||
rows[key] = rowValues
|
||||
|
||||
});
|
||||
|
||||
// get row values for placement
|
||||
const rowValues = rows[row];
|
||||
|
||||
// get existing value placed
|
||||
const existingValue = rowValues[column - 1];
|
||||
|
||||
// make sure placement location does not already contain a number
|
||||
// make sure placements row does not already have value.
|
||||
return (existingValue == '.' || existingValue == value) && !rowValues.includes(value);
|
||||
|
||||
}
|
||||
|
||||
checkColPlacement(puzzleString, row, column, value) {
|
||||
|
||||
const columns = {
|
||||
1: [],
|
||||
2: [],
|
||||
3: [],
|
||||
4: [],
|
||||
5: [],
|
||||
6: [],
|
||||
7: [],
|
||||
8: [],
|
||||
9: [],
|
||||
};
|
||||
|
||||
const columnKeys = Object.keys(columns);
|
||||
|
||||
columnKeys.forEach((key, index) => {
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
checkRegionPlacement(puzzleString, row, column, value) {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
+30
-1
@@ -28,12 +28,41 @@ suite('UnitTests', () => {
|
||||
test('SudokuSolver.validate(puzzleString) puzzle string of 82 characters with valid characters', (done) => {
|
||||
|
||||
const input = puzzlesAndSolutions[0][0] + '0';
|
||||
|
||||
|
||||
assert.equal(solver.validate(input), false);
|
||||
done();
|
||||
|
||||
});
|
||||
|
||||
test('checkRowPlacement(puzzleString, row, column, value) valid row placement', (done) => {
|
||||
|
||||
const input = puzzlesAndSolutions[0][0];
|
||||
|
||||
const row = 'A';
|
||||
|
||||
const column = '2';
|
||||
|
||||
const value = '9';
|
||||
|
||||
assert.equal(solver.checkRowPlacement(input, row, column, value), true);
|
||||
done();
|
||||
|
||||
});
|
||||
|
||||
test('checkRowPlacement(puzzleString, row, column, value) invalid row placement', (done) => {
|
||||
|
||||
const input = puzzlesAndSolutions[0][0];
|
||||
|
||||
const row = 'A';
|
||||
|
||||
const column = '2';
|
||||
|
||||
const value = '8';
|
||||
|
||||
assert.equal(solver.checkRowPlacement(input, row, column, value), false);
|
||||
done();
|
||||
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
Reference in New Issue
Block a user