private IList <LetterStats> FillSingleLetterStats() { var dictLetter = new Dictionary <char, LetterStats>(); _stream.ResetPositionToStart(); while (!_stream.IsEof) { char c = _stream.ReadNextChar(); if (!char.IsLetter(c)) { continue; } if (!dictLetter.ContainsKey(c)) { dictLetter[c] = new LetterStats { Letter = c }; } dictLetter[c].IncStatistic(); } return(dictLetter.Values.ToList()); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); var stats = new List <LetterStats>(); if (stream.IsEof) { return(stats); } var chars = new char[2]; chars[0] = stream.ReadNextChar(); while (!stream.IsEof) { chars[1] = stream.ReadNextChar(); if (char.IsLetter(chars[0]) && char.IsLetter(chars[1])) { var str = new string(chars).ToLower(); IncStatistic(stats, str); } chars[0] = chars[1]; } return(stats); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { var statsList = new List <LetterStats>(); stream.ResetPositionToStart(); string prev = stream.ReadNextChar().ToString().ToLower(); while (!stream.IsEof) { string next = stream.ReadNextChar().ToString().ToLower(); // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - НЕ регистрозависимый. if (prev != next) { prev = next; continue; } string pair = string.Concat(next, prev); if (!statsList.Exists(item => item.Letter == pair)) { var stats = new LetterStats(pair); statsList.Add(stats); } IncStatistic(statsList.Find(item => item.Letter == pair)); } return(statsList); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> //private static IList<LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) private static void FillDoubleLetterStats(IReadOnlyStream stream, AlphabetLetter alphabetDoubleLetter) { char c1 = '0', c2; stream.ResetPositionToStart(); if (!stream.IsEof) { c1 = Char.ToLower(stream.ReadNextChar()); } while (!stream.IsEof) { c2 = Char.ToLower(stream.ReadNextChar()); // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - НЕ регистрозависимый. for (int i = 0; i < alphabetDoubleLetter.alphabet.Length; i++) { if (c1 == alphabetDoubleLetter.alphabet[i] && c2 == alphabetDoubleLetter.alphabet[i]) { alphabetDoubleLetter.letterCounter[i]++; break; } } c1 = c2; } }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { List <LetterStats> list = new List <LetterStats>(); stream.ResetPositionToStart(); char tempChar = stream.ReadNextChar(); while (!stream.IsEof) { char c = stream.ReadNextChar(); if (char.IsLetter(c) && tempChar.ToString().ToLower() == c.ToString().ToLower()) { string newPair = "" + tempChar + c; int index = list.FindIndex(x => x.Letter.ToLower() == newPair.ToLower()); if (index == -1) { list.Add(new LetterStats { Letter = newPair, Count = 1 }); } else { LetterStats stats = list[index]; // заполнять статистику с использованием метода IncStatistic. Учёт букв - НЕ регистрозависимый. IncStatistic(ref stats); list[index] = stats; } } tempChar = c; } return(list); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { List <LetterStats> lst = new List <LetterStats>(); LetterStats ls; int index; char c1; stream.ResetPositionToStart(); char c = stream.ReadNextChar(); while (!stream.IsEof) { if (char.IsLetter(c)) { c1 = stream.ReadNextChar(); if (char.IsLetter(c1)) { if (char.ToLower(c) == char.ToLower(c1)) { ls = lst.FirstOrDefault(x => x.Letter == (c.ToString() + c1.ToString())); index = lst.IndexOf(ls); if (ls.Letter == null) { ls.Letter = (c.ToString() + c1.ToString()); ls.Count = 1; lst.Add(ls); } else { lst[index] = IncStatistic(ls); } if (!stream.IsEof) { c = stream.ReadNextChar(); } } else { c = c1; } } else { c = c1; } } else { if (!stream.IsEof) { c = stream.ReadNextChar(); } } } return(lst); //throw new NotImplementedException(); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { //Список букв IList <LetterStats> doubleLetters = new List <LetterStats>(); stream.ResetPositionToStart(); //Предыдущая буква char cBack = stream.ReadNextChar(); while (!stream.IsEof) { //Перебор по символам char c = stream.ReadNextChar(); //Буквы в верхнем регистре, предыдущая и текущая буквы char upperLetterC = char.ToUpper(c); char upperLetterCBack = char.ToUpper(cBack); //Если входит в набор if (Regex.IsMatch(cBack.ToString(), "[а-яА-Я]") && Regex.IsMatch(c.ToString(), "[а-яА-Я]")) { if (upperLetterCBack == upperLetterC) { int count = 0; //Проходимся по списку, если имеется уже такая буква, то увеличиваем //Если нет, то добавляем в список букву с количеством 1 foreach (LetterStats item in doubleLetters) { if (char.ToUpper(item.Letter[0]) == upperLetterCBack) { LetterStats copyLetter = doubleLetters[count]; IncStatistic(ref copyLetter); doubleLetters[count] = copyLetter; c = default; break; } count++; } if (c != default) { doubleLetters.Add(new LetterStats() { Letter = upperLetterCBack + upperLetterC.ToString(), Count = 1 }); } } } cBack = c; // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - НЕ регистрозависимый. } return(doubleLetters); //throw new NotImplementedException(); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { List <LetterStats> stats = new List <LetterStats>(); stream.ResetPositionToStart(); char firstLetter = '\0'; bool firstLetterReaded = false; while (!stream.IsEof) { if (!firstLetterReaded) { firstLetter = char.ToUpper(stream.ReadNextChar()); } if (stream.IsEof) { break; } char secondLetter = char.ToUpper(stream.ReadNextChar()); if (char.IsLetter(firstLetter) && char.IsLetter(secondLetter) && firstLetter == secondLetter) { firstLetterReaded = false; var pair = firstLetter.ToString() + secondLetter; var index = stats.FindIndex(x => string.Compare(x.Letter, pair) == 0); if (index == -1) { var stat = new LetterStats { Letter = pair, Count = 1 }; stats.Add(stat); } else { var stat = stats[index]; IncStatistic(ref stat); stats[index] = stat; } } else { if (char.IsLetter(secondLetter)) { firstLetterReaded = true; firstLetter = secondLetter; } } } return(stats); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); Dictionary <char, LetterStats> letterDict = new Dictionary <char, LetterStats>(); while (!stream.IsEof) { char c = stream.ReadNextChar(); if (!IsLetter(c)) { continue; } // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - регистрозависимый. if (letterDict.TryGetValue(c, out var letter)) { IncStatistic(letter); } else { letterDict.Add(c, new LetterStats() { Letter = c.ToString(), Count = 1 }); } } return(new List <LetterStats>(letterDict.Values)); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); List <LetterStats> singleLetters = new List <LetterStats>(); while (!stream.IsEof) { char c = stream.ReadNextChar(); string value = c.ToString(); if (!Char.IsLetter(c)) // если символ не является буквой - идем на следующую итерацию { continue; } var foundIndex = singleLetters.FindIndex(stat => stat.Letter.Equals(value)); if (foundIndex >= 0) { OnFoundIndex(singleLetters, foundIndex); } else // если в коллекции записи о букве нет - создаем запись, определяя тип звука { CharType type = Vowel.Contains(value) ? CharType.Vowel : CharType.Consonants; singleLetters.Add(new LetterStats(type, value, 1)); } } return(singleLetters); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { List <LetterStats> dictionary = new List <LetterStats>(); stream.ResetPositionToStart(); while (!stream.IsEof) { try { char c = stream.ReadNextChar(); // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - регистрозависимый. if (char.IsLetter(c)) { var entry = dictionary.Where(e => e.Letter.Equals(c.ToString(), StringComparison.InvariantCulture)).SingleOrDefault(); if (entry == null) //Если не нашли - добавим { dictionary.Add(new LetterStats(c.ToString())); // Т.к. регистрозависимая статистика - добавляем ключи как есть. } else { IncStatistic(entry); } } } catch (Exception e) { Console.WriteLine(e.Message); continue; } } return(dictionary); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { List <LetterStats> listStats = new List <LetterStats>(); char previousChar = Char.MinValue; stream.ResetPositionToStart(); while (!stream.IsEof) { char currentChar = stream.ReadNextChar(); if (char.IsLetter(currentChar)) { if (char.ToLowerInvariant(previousChar) == char.ToLowerInvariant(currentChar)) { string str = string.Empty; str += previousChar; str += currentChar; IncStatistic(str, listStats, false); previousChar = char.MinValue; } else { previousChar = currentChar; } } } return(listStats); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); IList <LetterStats> letterStats = new List <LetterStats>(); while (!stream.IsEof) { char c = stream.ReadNextChar(); if (char.IsLetter(c)) { var ls = new LetterStats { Letter = c.ToString() }; if (letterStats.Contains(ls)) { IncStatistic(letterStats[letterStats.IndexOf(ls)]); } else { letterStats.Add(new LetterStats { Letter = c.ToString(), Count = 1 }); } } } return(letterStats); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { List <LetterStats> rez = new List <LetterStats>(); stream.ResetPositionToStart(); while (!stream.IsEof) { char c = stream.ReadNextChar(); var ls = new LetterStats() { Letter = c.ToString(), Count = 1 }; var item = rez.Find(x => x.Letter == ls.Letter); if (item == null) { rez.Add(ls); } else { IncStatistic(item); } } return(rez); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { List <LetterStats> rez = new List <LetterStats>(); stream.ResetPositionToStart(); char old = '\0'; while (!stream.IsEof) { char c = stream.ReadNextChar(); if (c.ToString().ToLower() == old.ToString().ToLower()) { var ls = new LetterStats() { Count = 1, Letter = old.ToString().ToLower() + c.ToString().ToLower(), }; var item = rez.Find(x => x.Letter == ls.Letter); if (item == null) { rez.Add(ls); } else { IncStatistic(item); } } old = c; } return(rez); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { var dict = new Dictionary <char, LetterStats>(); stream.ResetPositionToStart(); while (!stream.IsEof) { char c = stream.ReadNextChar(); if (stream.IsEof) { continue; } if (IsRussianLetter(c)) { if (dict.ContainsKey(c)) { var item = dict[c]; item.Count++; dict[c] = item; } else { var newItem = new LetterStats { Count = 1, Letter = c.ToString() }; dict.Add(c, newItem); } } } return(dict.Values.ToList()); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { using (stream) { stream.ResetPositionToStart(); List <LetterStats> result = new List <LetterStats>(); while (!stream.IsEof) { char c = stream.ReadNextChar(); // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - регистрозависимый. LetterStats stat = result.Find(x => x.Letter == c.ToString()); if (stat == null) { stat = new LetterStats(c.ToString()); result.Add(stat); } IncStatistic(stat); } return(result); } }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { IList <LetterStats> result = new List <LetterStats>(); stream.ResetPositionToStart(); while (!stream.IsEof) { char charCurrent = stream.ReadNextChar(); //если символ не является буквой перейти к следующему if (!char.IsLetter(charCurrent)) { continue; } // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - регистрозависимый. LetterStats row = result.SingleOrDefault(item => item.Letter == charCurrent.ToString()); if (row != null) { IncStatistic(row); } else { result.Add(new LetterStats { Letter = charCurrent.ToString(), Count = 1 }); } } return(result); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); IList <LetterStats> answer = new List <LetterStats>(); while (!stream.IsEof) { char c = stream.ReadNextChar(); if (!char.IsLetter(c)) { continue; } int i; for (i = 0; i < answer.Count; i++) { if (answer[i].Letter[0] == c) { answer[i] = IncStatistic(answer[i]); break; } } if (i == answer.Count) { var newStruct = new LetterStats(); newStruct.Letter = c.ToString(); newStruct.Count = 1; answer.Add(newStruct); } } return(answer); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); List <LetterStats> stats = new List <LetterStats>(); while (!stream.IsEof) { char c = stream.ReadNextChar(); if (char.IsLetter(c)) { string letter = c.ToString(); var index = stats.FindIndex(x => string.Compare(x.Letter, letter) == 0); if (index == -1) { var stat = new LetterStats { Letter = letter, Count = 1 }; stats.Add(stat); } else { var stat = stats[index]; IncStatistic(ref stat); stats[index] = stat; } } } return(stats); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); List <LetterStats> letterStatsList = new List <LetterStats>(); while (!stream.IsEof) { try { char c = stream.ReadNextChar(); // Проверяем, что символ является буквой, иначе продолжаем проход по циклу if (!Char.IsLetter(c)) { continue; } AddCharInListWithCheck(letterStatsList, c.ToString()); } catch (Exception ex) { Console.WriteLine(ex.Message); } } return(letterStatsList); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { IList <LetterStats> letterStateList = new List <LetterStats>(); stream.ResetPositionToStart(); while (!stream.IsEof) { char c = stream.ReadNextChar(); if (!Char.IsLetter(c)) { continue; } string letter = new String(c, 1); if (letter == " ") { continue; } var letterState = letterStateList.FirstOrDefault(o => o.Letter == letter); if (letterState == null) { letterState = new LetterStats(letter); letterStateList.Add(letterState); } IncStatistic(letterState); } return(letterStateList); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { List <LetterStats> result = new List <LetterStats>(); var wordReg = new Regex(@"[A-Zа-я]{2}", RegexOptions.IgnoreCase); stream.ResetPositionToStart(); char symbolPrevious = stream.ReadNextChar(); while (!stream.IsEof) { char symbol = stream.ReadNextChar(); var doubleLetter = $"{symbolPrevious}{symbol}"; symbolPrevious = symbol; if (!wordReg.IsMatch(doubleLetter)) { continue; } for (int ii = 0; ii < result.Count; ii++) { if (result[ii].Letter != doubleLetter) { continue; } var tmp = result[ii]; IncStatistic(ref tmp); result[ii] = tmp; doubleLetter = string.Empty; break; } if (string.IsNullOrEmpty(doubleLetter)) { continue; } result.Add(new LetterStats() { Letter = doubleLetter, Count = 1 }); } return(result); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); List <LetterStats> letterStatsList = new List <LetterStats>(); // Переменная для хранения второго символа string secondChar = default; if (!stream.IsEof) { secondChar = stream.ReadNextChar().ToString().ToLower(); } while (!stream.IsEof) { try { string firstChar = secondChar.ToLower(); secondChar = stream.ReadNextChar().ToString().ToLower(); // Проверяем, что символ является буквой, иначе продолжаем проход по циклу if (!Char.IsLetter(firstChar, 0)) { continue; } if (firstChar.Equals(secondChar)) { string charsPair = string.Concat(firstChar, secondChar); AddCharInListWithCheck(letterStatsList, charsPair); } } catch (Exception ex) { Console.WriteLine(ex.Message); } } return(letterStatsList); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); while (!stream.IsEof) { char c = stream.ReadNextChar(); // TODO : заполнять статистику с использованием метода IncStatistic. Учёт букв - НЕ регистрозависимый. } //return ???; throw new NotImplementedException(); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); var letterstats = new List <LetterStats>(); string c; if (!stream.IsEof) { c = stream.ReadNextChar().ToString(); } else { return(letterstats); } while (!stream.IsEof) { string cnext = stream.ReadNextChar().ToString(); if (c.ToLower() == cnext.ToLower()) { Console.WriteLine($"{c} {cnext}"); LetterStats ls = letterstats.FirstOrDefault(x => x.Letter.ToLower() == (c + cnext).ToLower()); if (ls == null) { letterstats.Add(new LetterStats() { Letter = (c + cnext), Count = 1 }); } else { IncStatistic(ls); } } c = cnext; // TODO : DONE заполнять статистику с использованием метода IncStatistic. Учёт букв - НЕ регистрозависимый. } return(letterstats); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения парных букв. /// В статистику должны попадать только пары из одинаковых букв, например АА, СС, УУ, ЕЕ и т.д. /// Статистика - НЕ регистрозависимая! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillDoubleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); Dictionary <string, LetterStats> dicLetterStats = new Dictionary <string, LetterStats>(); while (!stream.IsEof) { var firstChar = string.Empty; if (string.IsNullOrEmpty(firstChar)) { firstChar = stream.ReadNextChar().ToString().ToUpper(); } var secondChar = stream.ReadNextChar().ToString().ToUpper(); if (secondChar.Equals(firstChar)) { var charPair = firstChar + secondChar; if (!dicLetterStats.TryGetValue(charPair.ToString(), out var letterStats)) { letterStats.Count = 0; letterStats.Letter = charPair; dicLetterStats.Add(charPair, letterStats); } var currentLetterStats = dicLetterStats[charPair]; IncStatistic(ref currentLetterStats); dicLetterStats[charPair] = currentLetterStats; } firstChar = secondChar; } return(dicLetterStats.Values.ToList()); }
/// <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 IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { List <LetterStats> listStats = new List <LetterStats>(); stream.ResetPositionToStart(); while (!stream.IsEof) { char currentChar = stream.ReadNextChar(); if (char.IsLetter(currentChar)) { IncStatistic(currentChar.ToString(), listStats, true); } } return(listStats); }
/// <summary> /// Ф-ция считывающая из входящего потока все буквы, и возвращающая коллекцию статистик вхождения каждой буквы. /// Статистика РЕГИСТРОЗАВИСИМАЯ! /// </summary> /// <param name="stream">Стрим для считывания символов для последующего анализа</param> /// <returns>Коллекция статистик по каждой букве, что была прочитана из стрима.</returns> private static IList <LetterStats> FillSingleLetterStats(IReadOnlyStream stream) { stream.ResetPositionToStart(); var stats = new List <LetterStats>(); while (!stream.IsEof) { var ch = stream.ReadNextChar(); if (char.IsLetter(ch)) { IncStatistic(stats, ch.ToString()); } } return(stats); }