Пример #1
0
        private IEnumerable <int> ToComplementCode()
        {
            var bin = ToInvertCode(ValueBin.ToList());
            var res = new Bin(bin, IsNegative) + new Bin(1);

            return(res.ValueBin);
        }
Пример #2
0
        public static ValueBin[] CountValues <T>(this IList <T> self, bool sort = true)
        {
            var counter = new Dictionary <T, int>();

            foreach (var value in self)
            {
                if (counter.TryGetValue(value, out var count))
                {
                    counter[value] = count + 1;
                }
                else
                {
                    counter[value] = 1;
                }
            }

            var values = counter.Keys.ToArray();

            if (sort)
            {
                Array.Sort(values);
            }

            var bins = new ValueBin[values.Length];

            for (var i = 0; i < values.Length; ++i)
            {
                var count = counter[values[i]];
                var bin   = new ValueBin()
                {
                    Index = i,
                    Value = values[i],
                    Count = count,
                    Ratio = (double)count / self.Count
                };

                bins[i] = bin;
            }

            return(bins);
        }