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