Hello, I didn’t want to research this specific function too deeply in case I spoil some things for myself but I’m having a little trouble with the solve function inside sudoku-solver.js.
My current idea is to loop through each number/period of the string, if it is a period it will loop through 1-9 and check if they pass other functions (the row, column, region functions) and then insert the number in.
To do that I am using slice(0, index) plus character plus slice(index +1).
But the output keeps shortening the original after a few loops.
if puzzleString= …9…5.1.85.4…2432…1…69.83.9…6.62.71…9…1945…4.37.4.3…6…
solve(puzzleString) {
const rows = "ABCDEFGHI";
let count = 0;
var solution = puzzleString
while(count <= 8){
for(var k in puzzleString){
if(count == 8 && k == 0){
break;
}
else if(k%9 == 0 && k != 0){
count++
}
let column = (k%9) ;
let roww = rows[count];
let num = puzzleString[k];
let exp = 1;
function makeChange(str, index, letter){
let s1 = str.slice(0, index)
let s2 = str.slice(index+1)
console.log(" ")
console.log("s1 is " + s1)
console.log("s2 is " + s2)
console.log( " ")
return s1 + letter + s2;
}
if(num == "."){
while(exp <=9){
if(this.checkRowPlacement(solution, roww, column+1, exp)){
console.log(roww + (column+1) + " is a period and " + exp + " can fit here.")
console.log("k equals " + k)
solution = makeChange(solution, k, exp);
exp = 1;
console.log(solution)
console.log(" ")
break;
} else {
exp++
}
}
}
Output would be
“23.14.6…”
at the end.
On console I can see that it keeps shortening every loop. Not sure why.
edit: I am only checking against the checkRowPlacement for now until I figure out this problem.