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