示例#1
0
文件: Program.cs 项目: nikromw/CQG
        //итерируемся побуквенно по словарному слову и слову с ошибкой
        // меньшее по длинне слово точно содержиться в большем
        static void CompareWords(WordElement word, string Dict)
        {
            char[] errorW     = word.value.ToCharArray();
            char[] DictW      = Dict.ToCharArray();
            int    difference = 0;

            // сравнение большего слова с меньшим (словарное больше)

            foreach (var L in errorW)
            {
                if (!DictW.Contains(L))
                {
                    difference++;
                    if (difference >= 3)
                    {
                        return;
                    }
                }
            }
            foreach (var L in DictW)
            {
                if (!errorW.Contains(L))
                {
                    difference++;
                    if (difference > 2)
                    {
                        return;
                    }
                }
            }

            word.AssumCorrectList.Add(Dict);
        }
示例#2
0
文件: Program.cs 项目: nikromw/CQG
        //делим строки на словарь и контекст
        //создаем листы со словами из словаря и неверных слов
        static void SplitRows(List <string> str)
        {
            bool content = false;

            foreach (var i in str)
            {
                if (i == "===")
                {
                    content = true;
                    continue;
                }
                if (!content)
                {
                    foreach (var word in i.Split(' '))
                    {
                        Dict.Add(word.ToLower());
                    }
                }
                else
                {
                    foreach (var word in i.Split(' '))
                    {
                        if (word != "")
                        {
                            WordElement tmp = new WordElement(word);
                            Content.Add(tmp);
                        }
                    }
                }
            }
        }
示例#3
0
文件: Program.cs 项目: nikromw/CQG
        // проверяем , чтобы две вставки или удаления не стояли рядом
        static bool AdjacentCheck(WordElement word, List <char> charArr, string assumeWord)
        {
            string sample = new string(charArr.ToArray());

            if (word.value.Length > assumeWord.Length)
            {
                if (word.value.IndexOf(sample) < 0)
                {
                    List <char> wordCompareList = new List <char>();
                    foreach (var ch in word.value.ToArray())
                    {
                        if (ch != charArr[0] || ch != charArr[1])
                        {
                            wordCompareList.Add(ch);
                        }
                    }
                    var compareWord = new string(wordCompareList.ToArray());
                    if (assumeWord == compareWord)
                    {
                        return(true);
                    }
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                if (assumeWord.IndexOf(sample) < 0)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            return(false);
        }
示例#4
0
文件: Program.cs 项目: nikromw/CQG
        //костыль
        static bool Сrutch(WordElement word, List <char> charArr, string assumeWord)
        {
            string sample = new string(charArr.ToArray());

            if (word.value.Length > assumeWord.Length)
            {
                List <char> wordValArr = new List <char>();
                foreach (var ch in word.value.ToCharArray())
                {
                    wordValArr.Add(ch);
                }
                var tmp = wordValArr;
                for (int ch = 0; ch < wordValArr.Count(); ch++)
                {
                    if (wordValArr[ch] == sample.ToCharArray()[0])
                    {
                        wordValArr.RemoveRange(ch, 1);
                        break;
                    }
                }
                string newWord = new string(wordValArr.ToArray());
                if (newWord != assumeWord)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            else
            {
                List <char> wordValArr = new List <char>();
                foreach (var ch in assumeWord.ToCharArray())
                {
                    wordValArr.Add(ch);
                }
                var tmp = wordValArr;
                for (int ch = 0; ch < wordValArr.Count(); ch++)
                {
                    if (wordValArr[ch] == sample.ToCharArray()[0])
                    {
                        wordValArr.RemoveRange(ch, 1);
                        break;
                    }
                }
                string newWord = new string(wordValArr.ToArray());
                if (newWord != word.value)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }
            if (word.value == assumeWord)
            {
                return(true);
            }
            return(false);
        }