00001 #ifndef FCS_TALON_SOLVING_ALGORITHM_H
00002 #define FCS_TALON_SOLVING_ALGORITHM_H
00003
00011
00012 #include "FCSFreecellSolvingAlgorithm.h"
00013
00015 class FCSTalonSolvingAlgorithm : public FCSFreecellSolvingAlgorithm
00016 {
00017 public:
00024 static FCSTalonSolvingAlgorithm* Create(FCCommandLineArguments* CommandLine);
00025
00027 FCSTalonSolvingAlgorithm(FCCommandLineArguments* CommandLine);
00028
00030 virtual ~FCSTalonSolvingAlgorithm();
00031
00032 protected:
00034 FCSTalonSolvingAlgorithm();
00035
00037 void InitFCSTalonSolvingAlgorithm();
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00050 FCSTalonType m_TalonType;
00051
00053 FCInternalHash<FCSTalonStateData, void>* m_TalonsHash;
00055 CompareFunctionCompareNodesAlgorithm<FCSTalonStateData, void> m_TalonCompareFunction;
00057 MD5TalonStateDataHashAlgorithm m_TalonHashFunction;
00058
00062 virtual void InitSolve(FCSStateWithLocations* InitState);
00063
00070 virtual FCSStateSolvingReturnCodes CheckAndAddState(FCSStateWithLocations* NewState,
00071 FCSStateWithLocations** ExistingState,
00072 int Depth);
00073
00083 virtual FCSStateSolvingReturnCodes RunTest(int TestNumber, FCSStateWithLocations* StateWithLocations,
00084 int Depth, int NumberOfFreeStacks,
00085 int NumberOfFreecells,
00086 FCSDerivedStatesList* DerivedStateList);
00087
00096 FCSStateSolvingReturnCodes GetCardFromKlondikeTalon(FCSStateWithLocations* StateWithLocations,
00097 int Depth,
00098 int NumberOfFreeStacks,
00099 int NumberOfFreecells,
00100 FCSDerivedStatesList* DerivedStateList);
00101 };
00102
00103 #endif