implement SudokuSolver.checkColPlacement() method and wrote unit tests for method

This commit is contained in:
StevanFreeborn
2022-05-20 23:23:35 -05:00
parent cf287074fe
commit 2d815af9b8
2 changed files with 81 additions and 3 deletions
+55 -1
View File
@@ -42,7 +42,7 @@ class SudokuSolver {
// get existing value placed
const existingValue = rowValues[column - 1];
// make sure placement location does not already contain a number
// make sure placement location doesn't contain a value or contains same value
// make sure placements row does not already have value.
return (existingValue == '.' || existingValue == value) && !rowValues.includes(value);
@@ -64,12 +64,66 @@ class SudokuSolver {
const columnKeys = Object.keys(columns);
let offset = 0;
columnKeys.forEach(() => {
columnKeys.forEach((key, index) => {
const start = index + (9 * offset)
const end = start + 1;
const columnValue = puzzleString.slice(start, end);
columns[key].push(columnValue);
});
offset += 1;
});
// get column values for placement
const columnValues = columns[column];
// get existing value placed
let existingValue;
switch (row) {
case 'A':
existingValue = columnValues[0];
break;
case 'B':
existingValue = columnValues[1];
break;
case 'C':
existingValue = columnValues[2];
break;
case 'D':
existingValue = columnValues[3];
break;
case 'E':
existingValue = columnValues[4];
break;
case 'F':
existingValue = columnValues[5];
break;
case 'G':
existingValue = columnValues[6];
break;
case 'H':
existingValue = columnValues[7];
break;
case 'I':
existingValue = columnValues[8];
break;
default:
break;
}
// make sure placement location doesn't contain a value or contains same value
// make sure placements row does not already have value.
return (existingValue == '.' || existingValue == value) && !columnValues.includes(value);
}
checkRegionPlacement(puzzleString, row, column, value) {
+24
View File
@@ -58,5 +58,29 @@ suite('UnitTests', () => {
});
test('checkColPlacement(puzzleString, row, column, value) valid column placement', (done) => {
const input = puzzlesAndSolutions[0][0];
const row = 'A';
const column = '2';
const value = '5';
assert.equal(solver.checkColPlacement(input, row, column, value), true);
done();
});
test('checkColPlacement(puzzleString, row, column, value) invalid column placement', (done) => {
const input = puzzlesAndSolutions[0][0];
const row = 'A';
const column = '2';
const value = '6';
assert.equal(solver.checkColPlacement(input, row, column, value), false);
done();
});
});