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;
        }
        private void ParseConstraintFromTextLine(string line, FutoshikiGraph futoshikiGraph)
        {
            char[] constraintLine = line.ToCharArray();
            int    xIndex1        = Convert.ToInt32(constraintLine[0]) - 65;
            int    yIndex1        = int.Parse(constraintLine[1].ToString()) - 1;
            int    xIndex2        = Convert.ToInt32(constraintLine[3]) - 65;
            int    yIndex2        = int.Parse(constraintLine[4].ToString()) - 1;

            futoshikiGraph.AddEdgeFromSource(xIndex1, yIndex1, xIndex2, yIndex2, GraphEdge.EDGE_TYPE_ENUM.DESTINATION_GRATER);
            futoshikiGraph.AddEdgeFromSource(xIndex2, yIndex2, xIndex1, yIndex1, GraphEdge.EDGE_TYPE_ENUM.SOURCE_GREATER);
        }