private void LoadDataForFutoshiki()
        {
            string[] allLines    = File.ReadAllLines(FILE_NAME);
            int      problemSize = int.Parse(allLines[0]);
            int      counter     = 2;

            FutoshikiGraph futoshikiGraph = new FutoshikiGraph(problemSize);

            while (allLines[counter] != RELATIONS_FILE_SEPARATOR)
            {
                string[] oneMatrixLine = allLines[counter].Split(DATA_SEPARATOR);
                for (int i = 0; i < oneMatrixLine.Length; i++)
                {
                    futoshikiGraph.AddNode(ParseNode(oneMatrixLine[i], counter - 2, i));
                }
                counter++;
            }
            counter++;

            while (counter < allLines.Length)
            {
                ParseConstraintFromTextLine(allLines[counter], futoshikiGraph);
                counter++;
            }
            FutoshikiProblemSingleton.GetInstance().initialFutoshikiGraph = futoshikiGraph;
        }
        public CSPForwardChecking()
        {
            solutionsList  = new List <ICSPSolvable>();
            statisticsList = new List <CsvStatistics>();

            if (GAME_TYPE == GAME_TYPE_ENUM.FUTOSHIKI)
            {
                rootData = FutoshikiProblemSingleton.GetInstance().initialFutoshikiGraph.DeepClone();
            }
            else if (GAME_TYPE == GAME_TYPE_ENUM.SKYSCRAPPER)
            {
                rootData = SkyscraperProblemSingleton.GetInstance().initialSkyscrapperArray.DeepClone();
            }
            Solver();
        }