-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSolver.cpp
More file actions
53 lines (46 loc) · 1.43 KB
/
Copy pathSolver.cpp
File metadata and controls
53 lines (46 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include <iostream>
#include <string>
#include <typeinfo>
#include "Solver.hpp"
#include "PuzzleClass.hpp"
#include "PossibilitiesSquare.hpp"
void Solver::SolvePuzzle(PuzzleClass* Puzzle, Parser* Parser){
int counter = 0;
if (Puzzle->CheckPuzzle()){
std::cout << "Puzzle is proper! Beginning testing..." << std::endl;
do {
//std::cout << "Number through: " << ++counter << std::endl;
//Puzzle->PrintPuzzle();
//std::cout << "Solver iteration: " << solverIteration << std::endl;
if (!skipSetMinimumSquare){
Puzzle->SetMinimumSquare();
}
if (Puzzle->PlaceSquare()) {
//std::cout << "Square is placed" << std::endl;
Puzzle->UpdateInternalArray(1);
++(this->solverIteration);
Puzzle->UpdateExternalArray(1);
skipSetMinimumSquare = false;
}
else {
Puzzle->UpdateExternalArray(-1);
--(this->solverIteration);
Puzzle->UpdateInternalArray(-1);
skipSetMinimumSquare = true;
//std::cout << "We updated internal Array!" << std::endl;
}
++counter;
} while ((solverIteration < (81 - Parser->GetinitializationCounter())) && (solverIteration != -1));
if (solverIteration == -1){
std::cout << "Puzzle is unsolvable!" << std::endl;
}
else {
std::cout << "Puzzle is solved!" << std::endl;
std::cout << "Number through: " << counter << std::endl;
solverIteration = 0;
skipSetMinimumSquare = false;
}
}
else
std::cout << "Puzzle is not proper!" << std::endl;
}