xref: /haiku/src/apps/sudoku/SudokuSolver.h (revision 451cbc4a94f85e8eb1d8923358a409f738d01c17)
1d578543aSAxel Dörfler /*
2d578543aSAxel Dörfler  * Copyright 2007, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
3d578543aSAxel Dörfler  * Distributed under the terms of the MIT License.
4d578543aSAxel Dörfler  */
5d578543aSAxel Dörfler #ifndef SUDOKU_SOLVER_H
6d578543aSAxel Dörfler #define SUDOKU_SOLVER_H
7d578543aSAxel Dörfler 
8d578543aSAxel Dörfler 
9d578543aSAxel Dörfler #include <vector>
10d578543aSAxel Dörfler 
11d578543aSAxel Dörfler #include <SupportDefs.h>
12d578543aSAxel Dörfler 
13d578543aSAxel Dörfler class SudokuField;
14d578543aSAxel Dörfler 
15d578543aSAxel Dörfler class SudokuSolver {
16d578543aSAxel Dörfler public:
17d578543aSAxel Dörfler 	SudokuSolver(SudokuField* field);
18d578543aSAxel Dörfler 	SudokuSolver();
19d578543aSAxel Dörfler 	~SudokuSolver();
20d578543aSAxel Dörfler 
21d578543aSAxel Dörfler 	void SetTo(SudokuField* field);
22d578543aSAxel Dörfler 
23d578543aSAxel Dörfler 	void ComputeSolutions();
24d578543aSAxel Dörfler 
25d578543aSAxel Dörfler 	uint32 CountSolutions();
26d578543aSAxel Dörfler 	SudokuField* SolutionAt(uint32 index);
27d578543aSAxel Dörfler 
28d578543aSAxel Dörfler private:
29*451cbc4aSAxel Dörfler 	void _MakeEmpty();
30*451cbc4aSAxel Dörfler 
317bd1d755SAxel Dörfler 	typedef std::vector<SudokuField*> SudokuList;
32d578543aSAxel Dörfler 
33d578543aSAxel Dörfler 	SudokuField*	fField;
34d578543aSAxel Dörfler 	SudokuList		fSolutions;
35d578543aSAxel Dörfler };
36d578543aSAxel Dörfler 
37d578543aSAxel Dörfler #endif	// SUDOKU_SOLVER_H
38