public void VisualizeSolution(IMatrix <int> matrix, ISolution solution)
            {
                var text     = new StringBuilder();
                var splitted = new SplittedMatrix(matrix, solution);
                var index    = new Index2D();

                for (int i = 0; i < splitted.Size(0); i++) //строка разбитой матрицы
                {
                    if (i != 0)
                    {
                        text.AppendLine();
                    }
                    for (index.I = splitted.CellLow(i, 0); index.I <= splitted.CellHigh(i, 0); index.I++) //строка исходной матрицы, попавшая в строку разбитой матрицы
                    {
                        for (int j = 0; j < splitted.Size(1); j++)                                        //столбец разбитой матрицы
                        {
                            if (j != 0)
                            {
                                text.AppendFormat("    ");
                            }

                            for (index.J = splitted.CellLow(j, 1); index.J <= splitted.CellHigh(j, 1); index.J++) //столбец исходной матрицы, попавший в столбец разбитой матрицы
                            {
                                text.AppendFormat("{0,3} ", matrix[index]);
                            }
                        }
                        text.AppendLine();
                    }
                }

                MessageBox.Show(text.ToString());
            }
 private void SetSolutionSize()
 {
     solutionSizeRow    = splittedMatrix.Size(1);
     solutionSizeColumn = splittedMatrix.Size(0);
 }