Пример #1
0
        public void choice(string a, string b)
        {
            locWord   userWord  = new locWord(a);
            valueWord userValue = new valueWord(b, 1);

            uaddWordsToList(userWord, userValue);
        }
Пример #2
0
        static int addWordsToLink(List <valueWord> tList, valueWord tWord)
        {
            int length = tList.Count - 1;

            if (length == -1)
            {
                tList.Add(tWord);
                return(1);
            }
            if (tWord.value > tList[0].value)
            {
                tList.Insert(0, tWord);
                return(1);
            }
            if (tWord.value <= tList[length].value)
            {
                tList.Add(tWord);
                return(1);
            }
            int max = length, min = 0, mid;

            int count = 0;

            while (true)
            {
                if (count == 800)
                {
                    return(-1);
                }
                mid = (min + max) / 2;
                if (tWord.value < tList[mid].value && tWord.value > tList[mid + 1].value)
                {
                    tList.Insert(mid + 1, tWord);
                    return(1);
                }
                else if (tWord.value < tList[mid].value)
                {
                    min = mid;
                }
                else if (tWord.value > tList[mid].value)
                {
                    max = mid;
                }

                else
                {
                    tList.Insert(mid, tWord);
                    return(1);
                }
                count++;
            }
        }
Пример #3
0
        int uaddWordsToLink(List <valueWord> tList, valueWord tWord)
        {
            int length = tList.Count;

            for (int i = 0; i < length; i++)
            {
                if (tList[i].word.Equals(tWord.word))
                {
                    tList[i].value++;
                    return(1);
                }
            }
            tList.Insert(0, tWord);
            return(0);
        }
Пример #4
0
        public string[] finds(string theWord)
        {
            theWord = theWord.ToLower();
            List <valueWord> getValueWord  = findWord(theWord);
            List <valueWord> ugetValueWord = ufindWord(theWord);

            if (getValueWord == null && ugetValueWord == null)
            {
                return(null);
            }
            int length, ulength;
            List <valueWord> reList = new List <valueWord>();

            if (getValueWord == null)
            {
                length = 0;
            }
            else
            {
                length = getValueWord.Count;
            }
            if (ugetValueWord == null)
            {
                ulength = 0;
            }
            else
            {
                ulength = ugetValueWord.Count;
            }

            for (int i = 0; i < length; i++)
            {
                valueWord t = new valueWord(getValueWord[i].word, getValueWord[i].value);
                reList.Add(t);
                if (reList[i].value > 8)
                {
                    reList[i].value = (int)(reList[i].value / totalT * 1000);
                }
                else
                {
                    reList[i].value = (int)(reList[i].value / totalT * 600);
                }
            }
            for (int i = 0; i < ulength; i++)
            {
                valueWord t = new valueWord(ugetValueWord[i].word, ugetValueWord[i].value);
                reList.Add(t);
                reList[i].value = (int)(reList[i].value / utotalT * 1000);
            }
            reList.Sort(dc);
            for (int i = 0; i < reList.Count; i++)
            {
                for (int k = i + 1; k < reList.Count; k++)
                {
                    if (reList[k].word.Equals(reList[i].word))
                    {
                        reList.RemoveAt(k);
                        break;
                    }
                }
            }
            int j = reList.Count;

            if (j > 5)
            {
                j = 5;
            }
            string[] reString = new string[5] {
                "0", "0", "0", "0", "0"
            };
            for (int k = 0; k < j; k++)
            {
                reString[k] = reList[k].word;
            }

            return(reString);
        }
Пример #5
0
        int uaddWordsToList(locWord a, valueWord b)
        {
            a.totalTimes++;
            int length = uWordList.Count - 1;

            if (length == -1)
            {
                uWordList.Add(a);
                uaddWordsToLink(a.link, b);
                return(1);
            }
            if (String.Compare(uWordList[length].words, a.words) == 0)
            {
                uWordList[length].totalTimes++;
                uaddWordsToLink(uWordList[length].link, b);
                uWordList[length].link.Sort(dc);
                return(0);
            }
            if (String.Compare(uWordList[0].words, a.words) == 1)
            {
                uWordList.Insert(0, a);
                uaddWordsToLink(a.link, b);
                return(1);
            }
            if (String.Compare(uWordList[length].words, a.words) == -1)
            {
                uWordList.Add(a);
                uaddWordsToLink(a.link, b);
                return(1);
            }
            int max = length, min = 0, mid;
            int count = 0;

            while (true)
            {
                if (count == 8000)
                {
                    return(-1);
                }
                mid = (min + max) / 2;
                if (String.Compare(uWordList[mid].words, a.words) == -1 && String.Compare(uWordList[mid + 1].words, a.words) == -1)
                {
                    min = mid;
                }
                else if (String.Compare(uWordList[mid].words, a.words) == 1 && String.Compare(uWordList[mid + 1].words, a.words) == 1)
                {
                    max = mid;
                }
                else if (String.Compare(uWordList[mid].words, a.words) == 0 || String.Compare(uWordList[mid + 1].words, a.words) == 0)
                {
                    uWordList[mid].totalTimes++;
                    uaddWordsToLink(uWordList[mid].link, b);
                    uWordList[mid].link.Sort(dc);
                }
                else
                {
                    uWordList.Insert(mid + 1, a);
                    uaddWordsToLink(a.link, b);
                    return(1);
                }
                count++;
            }
        }