Exemplo n.º 1
0
        public static List <FilterResult <T> > MedianValueFilter <T>
            (IEnumerable <T> items,
            Func <T, IComparable> valueFunc,
            int sampleCount, int jump)
        {
            T[] itemArray = items.ToArray();
            if (itemArray.Length < sampleCount)
            {
                itemArray = itemArray.OrderBy(p => valueFunc(p)).ToArray();
                var item = GetMedianItem(itemArray);
                return(new List <FilterResult <T> >()
                {
                    new FilterResult <T>(item, itemArray, valueFunc(item))
                });
            }
            List <FilterResult <T> > results = new List <FilterResult <T> >();

            for (int i = sampleCount - 1; i < itemArray.Length; i += jump)
            {
                AutoSortList <T> sortedList = new AutoSortList <T>(valueFunc);
                for (int j = i - sampleCount + 1; j <= i; j++)
                {
                    sortedList.Add(itemArray[j]);
                }
                T medianValue = GetMedianItem(sortedList);
                results.Add(new FilterResult <T>(medianValue, sortedList, valueFunc(medianValue)));
            }

            return(results);
        }
    public override T Get(object arg)
    {
        T item = base.Get(arg);

        tracker.Add(item);
        return(item);
    }
Exemplo n.º 3
0
 private void _addGS(GameSource source)
 {
     lock (GSList)
     {
         if (!GSList.TryAdd(source))
         {
             return;
         }
         added.Add(source);
         GSAdapterList.Add(new GameSourceAdapter(source));
     }
 }