Example #1
0
        static void Main(string[] args)
        {
            long count = 0;
            trie = new Trie();
            dict = new Dictionary<string, bool>();
            foreach (var word in Random.Words(10, 40))
            {
                trie.Add(word);
                dict[word] = true;
                count++;
            }

            Console.Clear();

            // 123 test
            bench("123", 0);
            // test an early find on list
            bench("car", 30);
            // test the last one on list
            bench("caterpillar", 60);

            Console.WriteLine();
            Console.WriteLine(count);
            Console.Read();
        }
Example #2
0
        public void testMatches()
        {
            Dictionary dict = new Dictionary();
            dict.words.Add("abcdef");
            dict.words.Add("bbcdezg");
            dict.words.Add("acc");
            dict.words.Add("bac");
            TrieNode root = TrieNode.createRootNode(dict);

            List<WordMatch> matches;
            root.parseText("abcdefghi", out matches);

            Assert.AreEqual(3, matches.Count);
            Assert.AreEqual(dict.words[2], matches[0].Word); //acc
            Assert.AreEqual(1, matches[0].LeftmostChange);
            Assert.AreEqual(1, matches[0].RightmostChange);

            Assert.AreEqual(dict.words[0], matches[1].Word);  //abcdef
            Assert.AreEqual(0, matches[1].NumChanges);

            Assert.AreEqual(dict.words[1], matches[2].Word);  //bbcdezg
            Assert.AreEqual(0, matches[2].LeftmostChange);
            Assert.AreEqual(1, matches[2].RightmostChange);

        }
        public dynamic Get(int count)
        {
            while (words.Count < count)
                words.AddRange(Trie.Random.Words(5, 10));

            DateTime sTime;
            var trie = new Trie.Trie();
            var dict = new Dictionary<string, bool>();
            var testWords = new List<string> {"123", "car", "caterpillar" };

            var trieData = new List<List<int>>();
            var dictData = new List<List<int>>();
            int x = 0;
            int jumps = 5000;
            while (x < count)
            {
                foreach (var word in words.Take(jumps).Skip(x))
                {
                    trie.Add(word);
                    dict[word] = true;
                }

                int dictZum = 0;
                int trieZum = 0;
                foreach (var word in testWords)
                {
                    for (int J = 0; J < TESTS; J++)
                    {
                        sTime = DateTime.Now;
                        for (int i = 0; i < LOOPS; i++)
                            trie.Contains(word);
                        trieZum += sTime.Diff();

                        sTime = DateTime.Now;
                        for (int i = 0; i < LOOPS; i++)
                            dict.ContainsKey(word);
                        dictZum += sTime.Diff();
                    }
                }
                x += jumps;
                trieData.Add(new List<int> { x, trieZum / (TESTS * testWords.Count) });
                dictData.Add(new List<int> { x, dictZum / (TESTS * testWords.Count) });
            }

            dynamic chart = new ExpandoObject();
            chart.Label = "TrieBenchmark";
            chart.TrieData = trieData;
            chart.DictData = dictData;

            return Json(chart);
        }
Example #4
0
        public void testBasicMatches()
        {
            Dictionary dict = new Dictionary();
            dict.words.Add("abc");
            dict.words.Add("bccd");
            dict.words.Add("abcc");
            dict.words.Add("bab");
            TrieNode root = TrieNode.createRootNode(dict);

            List<WordMatch> matches;
            root.parseText("abccd", out matches);

            Assert.AreEqual(2, matches.Count);
            Assert.AreEqual(dict.words[0], matches[0].Word);
            Assert.AreEqual(dict.words[2], matches[1].Word);


        }
Example #5
0
        public void testAddWord()
        {
            Dictionary dict = new Dictionary();
            dict.words.Add("abc");
            dict.words.Add("acc");
            TrieNode root = TrieNode.createRootNode(dict);

            Assert.AreEqual(1, root.childrenList.Count);
            TrieNode nodeA = root.children[0];
            Assert.AreSame(root.childrenList[0].Item2, nodeA);

            Assert.AreEqual(2, nodeA.childrenList.Count);

            TrieNode nodeB = nodeA.children[1];
            TrieNode nodeC = nodeA.children[2];

            Assert.AreEqual(1, nodeB.childrenList.Count);
            Assert.AreEqual(1, nodeC.childrenList.Count);

        }
Example #6
0
        public static TrieNode createRootNode(Dictionary dict)
        {
            TrieNode root = new TrieNode();
            root.CurrentLength = 0;

            for (int dIdx = 0; dIdx < dict.words.Count; ++dIdx)
            {
                root.addWord(dict.words[dIdx]);
            }
            return root;
        }