コード例 #1
0
        private static List <char> CreateListWithVoting(AllPairsSuffixPrefixResule allPairsSuffixPrefixResule, SortedList sl, int patternCount, int patternLength)
        {
            var fullList     = new FullList();
            var overlap      = 0;
            var cursor       = 0;
            var queuePattern = allPairsSuffixPrefixResule.PatternQueue;
            var queueOverlap = allPairsSuffixPrefixResule.OverlapQueue;

            for (int i = 0; i < patternCount - 1; i++)
            {
                var pattern = sl.SortedElementArray[queuePattern[i]];
                cursor = cursor - overlap;
                for (int j = 0; j < overlap; j++)
                {
                    fullList.Update(cursor, pattern.CodeChars[j]);
                    cursor++;
                }
                for (int j = overlap; j < patternLength; j++)
                {
                    cursor++;
                    fullList.Add(pattern.CodeChars[j]);
                }
                overlap = queueOverlap[i];
            }
            cursor = cursor - overlap;

            var patternLocal = sl.SortedElementArray[queuePattern[patternCount - 1]];

            for (int i = 0; i < overlap; i++)
            {
                fullList.Update(cursor, patternLocal.CodeChars[i]);
                cursor++;
            }
            var overlapLast = queueOverlap[patternCount - 1];

            for (int i = overlap; i < patternLength - overlapLast; i++)
            {
                fullList.Add(patternLocal.CodeChars[i]);
                cursor++;
            }
            for (int i = 0; i < overlapLast; i++)
            {
                fullList.Update(i, patternLocal.CodeChars[patternLength - overlapLast - 1 + i]);
            }

            var list = new List <char>();

            foreach (var e in fullList.Src)
            {
                var m = GetMax(e);
                list.Add(Decode(m));
            }

            return(list);
        }
コード例 #2
0
        private static List <char> CreateListWithoutVoting(AllPairsSuffixPrefixResule allPairsSuffixPrefixResule, SortedList sl, int patternCount, int patternLength)
        {
            var list    = new List <char>();
            var overlap = allPairsSuffixPrefixResule.OverlapQueue[patternCount - 1];

            for (int i = 0; i < patternCount; i++)
            {
                var pattern = sl.SortedElementArray[allPairsSuffixPrefixResule.PatternQueue[i]];

                for (int j = overlap; j < patternLength; j++)
                {
                    list.Add(pattern.Chars[j]);
                }
                overlap = allPairsSuffixPrefixResule.OverlapQueue[i];
            }
            return(list);
        }