Clear pvals when setting cell
This removes the need to check if a cell is determined in solve()
This commit is contained in:
parent
40c12c3458
commit
ad8c0dc9c4
18
solve.c
18
solve.c
@ -67,10 +67,8 @@ int solve(struct sudoku *sud)
|
||||
* cell in its row.
|
||||
*/
|
||||
valmask = 0;
|
||||
for (j = 0; j < NGROUP; ++j) {
|
||||
if (!DET(sud->cells[rowidx_lut[i][j]]))
|
||||
valmask |= sud->cells[rowidx_lut[i][j]];
|
||||
}
|
||||
for (j = 0; j < NGROUP; ++j)
|
||||
valmask |= sud->cells[rowidx_lut[i][j]];
|
||||
if ((pvals = sud->cells[i] & ~valmask)) {
|
||||
setpval(sud, i, pvals);
|
||||
match = true;
|
||||
@ -82,10 +80,8 @@ int solve(struct sudoku *sud)
|
||||
* cell in its column.
|
||||
*/
|
||||
valmask = 0;
|
||||
for (j = 0; j < NGROUP; ++j) {
|
||||
if (!DET(sud->cells[colidx_lut[i][j]]))
|
||||
valmask |= sud->cells[colidx_lut[i][j]];
|
||||
}
|
||||
for (j = 0; j < NGROUP; ++j)
|
||||
valmask |= sud->cells[colidx_lut[i][j]];
|
||||
if ((pvals = sud->cells[i] & ~valmask)) {
|
||||
setpval(sud, i, pvals);
|
||||
match = true;
|
||||
@ -97,10 +93,8 @@ int solve(struct sudoku *sud)
|
||||
* cell in its segment.
|
||||
*/
|
||||
valmask = 0;
|
||||
for (j = 0; j < NGROUP; ++j) {
|
||||
if (!DET(sud->cells[segidx_lut[i][j]]))
|
||||
valmask |= sud->cells[segidx_lut[i][j]];
|
||||
}
|
||||
for (j = 0; j < NGROUP; ++j)
|
||||
valmask |= sud->cells[segidx_lut[i][j]];
|
||||
if ((pvals = sud->cells[i] & ~valmask)) {
|
||||
setpval(sud, i, pvals);
|
||||
match = true;
|
||||
|
Loading…
x
Reference in New Issue
Block a user