Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using System.Text;
- namespace TextAnalysis
- {
- static class TextGeneratorTask
- {
- public static string ContinuePhrase(Dictionary<string, string> nextWords, string phraseBeginning, int wordsCount)
- {
- var result = new StringBuilder(phraseBeginning); // данная фраза
- string[] mPhr = phraseBeginning.Split(' ');
- string w1 = mPhr[mPhr.Length - 1];
- // если фраза состоит из двух или более слов
- string w2 = mPhr.Length >= 2 ? mPhr[mPhr.Length - 2] : ""; // запоминаем последние два слова, иначе запомним только одно
- for (int i = 0; i < wordsCount; i++) // сколько раз надо добавить слово, столько раз и выполняется цикл
- {
- var key = (CheckKey(result, w1, w2, nextWords));
- if (key == string.Empty)
- break; // если ничего не нашли в словаре, тогда заканчиваем генерацию
- else
- {
- w2 = w1;
- w1 = nextWords[key];
- }
- }
- return result.ToString();
- }
- private static string CheckKey(StringBuilder result, string w1, string w2, Dictionary<string, string> nextWords)
- {
- string key = (w2 != string.Empty) ? (w2 + ' ' + w1) : w1;
- if (!nextWords.ContainsKey(key)) // если не нашли ключ по двум словам
- {
- if (!nextWords.ContainsKey(w1)) // если не нашли ключ по одному слову
- return ""; // ничего не добавим и вернем пустую строку
- key = w1; // если же таковой имеется, то запоминаем этот ключ
- }
- // если же условие не пройдет => имеется ключ из двух слов
- result.Append(' ' + nextWords[key]); // добавляем слово к фразе
- return key;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement