/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { IList <LetterStats> result = new List <LetterStats>(); stream.ResetPositionToStart(); while (!stream.IsEof) { char charCurrent = char.ToUpper(stream.ReadNextChar()); // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - НЕ регистрозависимый. char charNext = char.ToUpper(stream.GetNextChar()); //если один из символов не является буквой перейти к следующему if (!(char.IsLetter(charCurrent) && char.IsLetter(charNext))) { continue; } if (charCurrent == charNext) { LetterStats row = result.SingleOrDefault(item => item.Letter == $"{charCurrent}{charNext}"); if (row != null) { IncStatistic(row); } else { result.Add(new LetterStats { Letter = $"{charCurrent}{charNext}", Count = 1 }); } } } return(result); }