public void ParseVariablesWithRepeatlyVariables()
 {
     var input = "x*x*y";
                 var result = new KeyCountCollection<string>();
                 var parser = new VariablesParser();
                 var multipliers = parser.GetVariables(input);
                 result.AddRange(multipliers);
                 Assert.IsTrue(result.Count() == 2);
                 Assert.AreEqual(result.First(x => x.Key == "x").Value, 2);
 }
예제 #2
0
        /// <summary>
        /// Обработка слогаемых
        /// </summary>
        /// <param name="summands">Слогаемые</param>
        /// <param name="result">Выходная коллекция</param>
        /// <param name="inverse">Инвертировать ли слогаемые?</param>
        private void ParseSummand(IEnumerable<string> summands, KeyCountCollection<KeyCountCollection<string>> result, bool inverse)
        {
            foreach (var summand in summands)
                {
                    var coefficient = _coefficientParser.GetСoefficient(summand);
                    if (inverse)
                    {
                        coefficient *= -1;
                    }

                    var variableCollection = new KeyCountCollection<string>();
                    variableCollection.AddRange(_variablesParser.GetVariables(summand));
                    result.Add(variableCollection, coefficient);
                }
        }