diff --git a/MatrixExtensions.cs b/MatrixExtensions.cs index a8bb2bf..48d6dc1 100644 --- a/MatrixExtensions.cs +++ b/MatrixExtensions.cs @@ -47,6 +47,11 @@ namespace MatrixExtensions "Возвращает вектор уникальных значений, содержащихся в ('матрица').", FunctionSections.MatricesAndVectors, true, new ArgumentInfo(ArgumentSections.Matrix)), + + new TermInfo("listSortAsText", TermType.Function, + "Возвращает сортированный вектор значений, содержащихся в ('матрица').", + FunctionSections.MatricesAndVectors, true, + new ArgumentInfo(ArgumentSections.Matrix)), new TermInfo("listLength", TermType.Function, "Возвращает длину вектора ('вектор').", @@ -156,6 +161,32 @@ namespace MatrixExtensions return true; } + //listSort + if (value.Type == TermType.Function && value.ArgsCount == 1 && value.Text == "listSortAsText") + { + Entry arg1 = Computation.Preprocessing(value.Items[0], context); + + TNumber tmp = Computation.NumericCalculation(arg1, context); + + List vector = new List(Utilites.EntryMatrix2ArrStr(tmp.obj)); + vector.RemoveAt(vector.Count - 1); + vector.RemoveAt(vector.Count - 1); + vector.Sort(); + + List answer = new List(); + foreach (string item in vector) + { + answer.AddRange(TermsConverter.ToTerms(item)); + } + + answer.AddRange(TermsConverter.ToTerms(vector.Count.ToString())); + answer.AddRange(TermsConverter.ToTerms(1.ToString())); + answer.Add(new Term(Functions.Mat, TermType.Function, 2 + vector.Count)); + + result = Entry.Create(answer.ToArray()); + return true; + } + //listAdd if (value.Type == TermType.Function && value.ArgsCount == 2 && value.Text == "listAdd") {