コード例 #1
0
ファイル: Program.cs プロジェクト: Sinthen/TestTask
        /// <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);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: Sinthen/TestTask
        /// <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);
        }