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();
        }
        private void LoadDataForSkyscrapper()
        {
            string[] allLines = File.ReadAllLines(FILE_NAME);

            int problemSize = int.Parse(allLines[0]);

            SkyscraperProblemSingleton skyscraperProblem = SkyscraperProblemSingleton.GetInstance();

            skyscraperProblem.Initialize(problemSize);

            SkyscraperProblemSingleton.upperContraints = ParseConstraintLineForSkyscrapper(allLines[1], problemSize);
            SkyscraperProblemSingleton.lowerContraints = ParseConstraintLineForSkyscrapper(allLines[2], problemSize);
            SkyscraperProblemSingleton.leftContraints  = ParseConstraintLineForSkyscrapper(allLines[3], problemSize);
            SkyscraperProblemSingleton.rightContraints = ParseConstraintLineForSkyscrapper(allLines[4], problemSize);

            SkyscraperProblemSingleton.GetInstance().initialSkyscrapperArray.PrintAllElements();
        }