コード例 #1
0
ファイル: Expression.cs プロジェクト: DronLee/Paragon
        /// <summary>
        /// Получение массива нормализованных слагаемых.
        /// </summary>
        /// <returns>Массив нормализованных слагаемых.</returns>
        private              TermStruct[] GetNormalizedTerms()
        {
            // Это будет общий набор слагаемых.
            var terms = LeftPart.ToList();

            // Слагаемые с правой стороны должны перенестись влево с противоположным знаком.
            terms.AddRange(RightPart.Select(t => t.Minus()));

            var resultTerms = new List <TermStruct>();

            // Группируем по переменным и степени,
            // так как слагаемые с этими одинаковыми составляющими мы можем сложить.
            foreach (var termGroup in terms.GroupBy(t => (t.Variable, t.Power)).ToArray())
            {
                var multiplier = termGroup.Sum(t => t.Multiplier);
                if (multiplier != 0)
                {
                    resultTerms.Add(new TermStruct
                    {
                        Multiplier = multiplier,
                        Power      = termGroup.Key.Power,
                        Variable   = termGroup.Key.Variable
                    });
                }

                foreach (var removingTerm in termGroup)
                {
                    terms.Remove(removingTerm);
                }
            }

            resultTerms.AddRange(terms);
            return(resultTerms.OrderBy(t => (0 - t.Power, t.Variable == null ? int.MaxValue : 0 - t.Variable.Length, t.Variable)).ToArray());
        }
コード例 #2
0
ファイル: NvidiaSmiDriver.cs プロジェクト: triggah61/DMS-Core
        public int CompareTo(NvidiaSmiDriver other)
        {
            var leftPartComparison = LeftPart.CompareTo(other.LeftPart);

            if (leftPartComparison != 0)
            {
                return(leftPartComparison);
            }
            return(RightPart.CompareTo(other.RightPart));
        }
コード例 #3
0
            private void Process()
            {
                _startIndex = Center;
                int half = (int)Math.Floor((_itemsCount - 1) * 0.5);

                while (LeftPart.Count < half)
                {
                    LeftPart.Add(ProcessPreviousIndex());
                }

                LeftPart.Reverse();
                Total.AddRange(LeftPart);
                Total.Add(Center);

                _startIndex = Center;

                while (RightPart.Count + LeftPart.Count < _itemsCount - 1)
                {
                    RightPart.Add(ProcessNextIndex());
                }
                Total.AddRange(RightPart);
            }
コード例 #4
0
ファイル: InCondition.cs プロジェクト: sGeeK44/Orm
 /// <summary>
 ///     Convert part to sql string equivalent
 /// </summary>
 /// <param name="params">existing param list to populate in case of part object value</param>
 /// <returns>Sql string representation</returns>
 public override string ToStatement(List <IDataParameter> @params)
 {
     return(string.Concat(LeftPart.ToStatement(@params), ConditionValue, "(", RightPart.ToStatement(@params),
                          ")"));
 }
コード例 #5
0
ファイル: Rule.cs プロジェクト: FunnyCodeLabs/GrammarTools
 public override string ToString()
 {
     return(LeftPart.ToString() + " -> " + String.Concat(RightPart.Select(t => t.ToString() + " ")).Trim());
 }
コード例 #6
0
ファイル: Condition.cs プロジェクト: sGeeK44/OpenNet
 /// <summary>
 /// Convert part to sql string equivalent
 /// </summary>
 /// <param name="params">existing param list to populate in case of part object value</param>
 /// <returns>Sql string representation</returns>
 public virtual string ToStatement(List <IDataParameter> @params)
 {
     return(string.Concat(LeftPart.ToStatement(@params), ConditionValue, RightPart.ToStatement(@params)));
 }