Esempio n. 1
0
        //Load matrix to convert with rules
        private void button14_Click(object sender, EventArgs e)
        {
            Stream         myStream        = null;
            OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.Filter           = "Text|*.txt";
            openFileDialog1.FilterIndex      = 2;
            openFileDialog1.RestoreDirectory = true;
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    if ((myStream = openFileDialog1.OpenFile()) != null)
                    {
                        string                filename  = openFileDialog1.FileName;
                        string                fileText  = System.IO.File.ReadAllText(filename);
                        MatrixParser          parser    = new MatrixParser();
                        List <FullMatrixData> parseData = InputMatrixParser.ParseSquareMatrix(fileText, filename);
                        matrixJsonGlobal  = parseData[0].matrixJson;
                        richTextBox3.Text = JsonConvert.SerializeObject(matrixJsonGlobal);

                        //GenerationRules ruleData = input_generator.Classes.RuleParser.ParseRules(parseData[0].yamlRules);
                        //input_generator.Classes.Generator.generateSquareMatrix(ruleData, parseData[0].matrixJson);
                        //richTextBox4.Text =
                        //System.IO.File.WriteAllText("generated-matrix.txt", matrixJson);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }
    public static MatrixJson MatrixToJson(List <string[]> matrixData, string fileName)
    {
        MatrixJson             matrixJson  = new MatrixJson();
        List <ConnectionsJson> connections = new List <ConnectionsJson>();
        int matrixRowLength = Convert.ToInt32(Math.Sqrt(matrixData[0].Length));

        for (int i = 0; i < matrixRowLength; i++)
        {
            for (int j = 0; j < matrixRowLength; j++)
            {
                if (i == matrixRowLength - 1)
                {
                    connections.Add(new ConnectionsJson {
                        from = i, to = j, value = Helper.ConvertToDouble(matrixData[0][j + matrixRowLength])
                    });
                }
                else
                {
                    connections.Add(new ConnectionsJson {
                        from = i, to = j, value = Helper.ConvertToDouble(matrixData[0][j])
                    });
                }
            }
        }

        matrixJson.connections = connections;
        matrixJson.n           = matrixRowLength;
        matrixJson.name        = fileName;

        return(matrixJson);
    }
    public static List <FullMatrixData> ParseColumnMatrix(string inputMatrix, string fileName)
    {
        List <char>     separators = ColumnMatrixHelper.FindNumberSeparators(inputMatrix);
        char            separator  = ColumnMatrixHelper.SelectPopularSeparator(separators);
        string          delimiter  = ColumnMatrixHelper.GetDelimiter(separator, inputMatrix);
        List <string[]> matrixData = ColumnMatrixHelper.GetMatrixData(inputMatrix, delimiter);
        int             startLine  = ColumnMatrixHelper.GetStartLine(matrixData, delimiter, inputMatrix);

        List <FullMatrixData> fullMatrixData = new List <FullMatrixData>();
        MatrixJson            jsonMatrix     = ColumnMatrixHelper.MatrixToJson(matrixData, fileName);

        fullMatrixData.Add(new FullMatrixData {
            delimiter = delimiter, separator = separator, matrixData = matrixData, matrixJson = jsonMatrix, startLine = startLine
        });

        return(fullMatrixData);
    }
    public static MatrixJson MatrixToJson(List <string[]> matrixData, string fileName)
    {
        MatrixJson             matrixJson  = new MatrixJson();
        List <ConnectionsJson> connections = new List <ConnectionsJson>();

        for (int i = 0; i < matrixData.Count; i++)
        {
            connections.Add(new ConnectionsJson {
                from = Int32.Parse(matrixData[i][0]), to = Int32.Parse(matrixData[i][1]), value = Helper.ConvertToDouble(matrixData[i][2])
            });
        }

        matrixJson.connections = connections;
        matrixJson.n           = matrixData.Count;
        matrixJson.name        = fileName;

        return(matrixJson);
    }
    public static List <FullMatrixData> ParseSquareMatrix(string inputMatrix, string fileName)
    {
        List <char>     separators = SquareMatrixHelper.FindNumberSeparators(inputMatrix);
        char            separator  = SquareMatrixHelper.SelectPopularSeparator(separators);
        string          delimiter  = SquareMatrixHelper.GetDelimiter(separator, inputMatrix);
        List <string[]> matrixData = SquareMatrixHelper.GetMatrixData(inputMatrix, delimiter);
        List <string>   matrixHat  = SquareMatrixHelper.GetMatrixHat(matrixData);

        if (matrixHat != null)
        {
            matrixData = SquareMatrixHelper.CutMatrixHat(matrixData, matrixHat);
        }
        int startLine = SquareMatrixHelper.GetStartLine(matrixData, delimiter, inputMatrix);
        List <ConnectionsJson> connections = SquareMatrixHelper.MatrixConnections(matrixData);

        List <PrimaryGraph.Verticle> graph = new List <PrimaryGraph.Verticle>();
        var numberGroups = connections.GroupBy(i => i.from);

        foreach (var grp in numberGroups)
        {
            PrimaryGraph.Verticle v = new PrimaryGraph.Verticle();
            v.verticle_id = (grp.Key + 1).ToString();
            if (matrixHat != null)
            {
                v.verticle = matrixHat[grp.Key];
            }
            else
            {
                v.verticle = (grp.Key + 1).ToString();
            }
            List <PrimaryGraph.Connections> cons = new List <PrimaryGraph.Connections>();
            foreach (ConnectionsJson connection in connections)
            {
                if (connection.value > 0 && grp.Key == connection.from)
                {
                    PrimaryGraph.Connections c = new PrimaryGraph.Connections();
                    c.connectedTo = (connection.to + 1).ToString();
                    c.strength    = connection.value;
                    cons.Add(c);
                }
            }
            v.connections = cons;
            graph.Add(v);
        }

        List <GenerationRules> generationRules = new List <GenerationRules>();

        generationRules.Add(new GenerationRules {
            delimiter = delimiter, matrixAtLine = startLine, separator = separator.ToString(), type = "square", notation = ""
        });
        string yamlRules = Helper.CollectGenerationRulesToYAML(generationRules);

        List <FullMatrixData> fullMatrixData = new List <FullMatrixData>();
        MatrixJson            jsonMatrix     = SquareMatrixHelper.MatrixToJson(matrixData, fileName);

        fullMatrixData.Add(new FullMatrixData {
            delimiter = delimiter, separator = separator, matrixData = matrixData, startLine = startLine, matrixJson = jsonMatrix, graph = graph, generationRules = generationRules, yamlRules = yamlRules
        });

        return(fullMatrixData);
    }