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); }
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); }