예제 #1
0
        private List <T> GetGapFillData(GapData gapData, Func <decimal, T> getDefaultRecord)
        {
            var result = new List <T>();

            for (int i = 1; i <= gapData.Count; i++)
            {
                decimal offset = gapData.PreviousOffset + (i * _expectedInterval);
                result.Add(getDefaultRecord(offset));
            }
            return(result);
        }
        static void Main(string[] args)
        {
            List <int> signals = new List <int>()
            {
                680, 841, 154, 940, 160, 157, 936, 354, 363, 682, 871, 932, 845, 32
            };

            signals.Sort();

            List <GapData> gapsData = new List <GapData>();

            for (int i = 0; i < signals.Count - 1; i++)
            {
                GapData newGap = new GapData()
                {
                    Index = i, Span = signals[i + 1] - signals[i]
                };
                gapsData.Add(newGap);
            }

            gapsData.Sort();

            gapsData = gapsData.Take(5).ToList();               //Keep 5 biggest gaps

            gapsData = gapsData.OrderBy(i => i.Index).ToList(); //sort on index

            List <List <int> > groupedList = new List <List <int> >();

            int index = 0;

            List <int> currentGroup = new List <int>();

            groupedList.Add(currentGroup);

            for (int i = 0; i < signals.Count; i++)
            {
                if (index < 5 && gapsData[index].Index < i)
                {
                    currentGroup = new List <int>();
                    groupedList.Add(currentGroup);
                    index++;
                }
                currentGroup.Add(signals[i]);
            }
        }