boolean simplify(unsigned short* sudoku, int recursionLevel) { boolean success = false; boolean roundSuccess = true; while(roundSuccess && !guessConflict[recursionLevel]) { roundSuccess = false; roundSuccess |= solvedCellSimplifiesUnit(sudoku, recursionLevel); roundSuccess |= findSingles(sudoku, recursionLevel); success |= roundSuccess; } return success; }
void main(){ int i; struct sudokuboard board; struct sudokuboard* pBoard; pBoard = &board; //struct sudokuboard test1; //struct sudokuboard test2; //board = &test1; //loadValues(board); //print(board); //printf("\n"); STACK *init = new_stack(); STACK **stack = &init; //push(stack, board); //board = &test2; //loadValues(board); //board->cell[0][0].value = 1; //print(board); //push(stack, board); //print(pop(stack)); //printf("\n"); //print(pop(stack)); //free(init); loadValues(pBoard); push(stack, pBoard); while(!is_empty(stack)){ do{ pBoard = pop(stack); flagColumns(pBoard); flagRows(pBoard); flagSquares(pBoard); } while(findSingles(pBoard)); } print(pBoard); }