public string GetRepeatedLetters(RepetitionCode repetitionCode) { var sb = new StringBuilder(); var length = sequence[0].Length; for (int i = 0; i < length; i++) { var repeatedLetter = sequence .Select(c => c[i]) .GroupBy(c => c) .LetterOrder(repetitionCode) .Select(c => c.Key) .First() .ToString(); sb.Append(repeatedLetter); } return(sb.ToString()); }
public static IOrderedEnumerable <IGrouping <char, char> > LetterOrder(this IEnumerable <IGrouping <char, char> > grouping, RepetitionCode repetitionCode) { IOrderedEnumerable <IGrouping <char, char> > orderedLetters = null; switch (repetitionCode) { case RepetitionCode.MostFrequent: orderedLetters = grouping.OrderByDescending(c => c.Count()); break; case RepetitionCode.LeastFrequent: orderedLetters = grouping.OrderBy(c => c.Count()); break; } return(orderedLetters); }