/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static LetterStats FillSingleLetterStats(IReadOnlyStream stream) { LetterStats letterStats = new LetterStats(); stream.ResetPositionToStart(); while (!stream.IsEof) { char c = stream.ReadNextChar(); if (char.IsLetter(c)) { letterStats.AddElement(c.ToString()); } } return(letterStats); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static LetterStats FillDoubleLetterStats(IReadOnlyStream stream) { LetterStats letterStats = new LetterStats(); stream.ResetPositionToStart(); char c1 = ' ', c2 = ' '; while (!stream.IsEof) { char c = stream.ReadNextChar(); if (char.IsLetter(c)) { if (c1 == ' ') { c1 = Char.ToUpperInvariant(c); } else { c2 = Char.ToUpperInvariant(c); if (c1 == c2) { var charpair = string.Format("{0}{1}", c1, c2); letterStats.AddElement(charpair); } c1 = ' '; c2 = ' '; } } else { c1 = ' '; c2 = ' '; } } return(letterStats); }