bool GameBoard::Solvable(std::set<unsigned int> &remSqs, Difficulty diff) { // Determines whether the puzzle is currently solvable // If there are fewer than 10 squares remaining, assume the puzzle is solvable if(remSqs.size() < 10) { writetoLog(_("Solvable - less than 10 empty squares"), _("GameBoard.log")); return true; } // If there are more than 65 squares remaing, assume the puzzle is not solvable if(remSqs.size() > 65) { writetoLog(_("Not solvable - more than 65 empty squares"), _("GameBoard.log")); return false; } bool solved; GameBoard * trying = new GameBoard(); trying->Binit(); trying->Copy(*this); solved = trying->Solve(remSqs, diff); delete trying; if(solved) writetoLog(_("Solvable - checked"), _("GameBoard.log")); else writetoLog(_("Not solvable - checked"), _("GameBoard.log")); return solved; }
bool GameBoard::Solvable() { // Determines whether the puzzle is currently solvable bool solved; GameBoard * trying = new GameBoard(); trying->Binit(); trying->Copy(*this); solved = trying->Solve(); delete trying; return solved; }