Example #1
0
        public void TestTST()
        {
            // build symbol table
            TST<string> st = new TST<string>();
            string[] a = new string[] { "by", "sea", "sells", "she", "shells", "shore", "the", };
            for (int i = 0; i < a.Length; i++) st.Put(a[i], i.ToString());

            // print results
            if (st.Size() < 100)
            {
                Debug.WriteLine("keys(\"\"):");
                foreach (string key in st.Keys())
                    Debug.WriteLine(key + " " + st.Get(key));
                Debug.WriteLine(Environment.NewLine);
            }

            Debug.WriteLine("longestPrefixOf(\"shellsort\"):");
            Debug.WriteLine(st.LongestPrefixOf("shellsort"));
            Debug.WriteLine(Environment.NewLine);

            Debug.WriteLine("longestPrefixOf(\"quicksort\"):");
            Debug.WriteLine(st.LongestPrefixOf("quicksort"));
            Debug.WriteLine(Environment.NewLine);

            Debug.WriteLine("keysWithPrefix(\"shor\"):");
            foreach (string s in st.KeysWithPrefix("shor"))
                Debug.WriteLine(s);
            Debug.WriteLine(Environment.NewLine);

            Debug.WriteLine("keysThatMatch(\".he.l.\"):");
            foreach (string s in st.KeysThatMatch(".he.l."))
                Debug.WriteLine(s);
        }
Example #2
0
        public void Run()
        {
            Console.WriteLine("Choose file:"); // Prompt
            Console.WriteLine("1 - shellsST.txt"); // Prompt
            Console.WriteLine("or quit"); // Prompt

            var fileNumber = Console.ReadLine();
            var fieName = string.Empty;
            switch (fileNumber)
            {
                case "1":
                    fieName = "shellsST.txt";
                    break;
                case "quit":
                    return;
                default:
                    return;
            }

            var @in = new In($"Files\\Strings\\{fieName}");
            var content = @in.ReadAllStrings();
            var st = new TST<Integer>();
            for (var i = 0; i< content.Length; i++)
            {
                st.Put(content[i], i);
            }

            // print results
            if (st.Size() < 100)
            {
                Console.WriteLine("keys(\"\"):");
                foreach (var key in st.Keys())
                {
                    Console.WriteLine($"{key} {st.Get(key).Value}");
                }
                Console.WriteLine();
            }

            Console.WriteLine("longestPrefixOf(\"shellsort\"):");
            Console.WriteLine(st.LongestPrefixOf("shellsort"));
            Console.WriteLine();

            Console.WriteLine("longestPrefixOf(\"shell\"):");
            Console.WriteLine(st.LongestPrefixOf("shell"));
            Console.WriteLine();

            Console.WriteLine("keysWithPrefix(\"shor\"):");
            foreach (var s in st.KeysWithPrefix("shor"))
                Console.WriteLine(s);
            Console.WriteLine();

            Console.WriteLine("keysThatMatch(\".he.l.\"):");
            foreach (var s in st.KeysThatMatch(".he.l."))
                Console.WriteLine(s);

            Console.ReadLine();
        }
Example #3
0
        public void Compress()
        {
            string    input = BinaryStdIn.ReadString();
            TST <int> st    = new TST <int>();

            for (int i = 0; i < R; i++)
            {
                st.Put("" + i, i);
            }
            int code = R + 1; //标记结束

            while (input.Length > 0)
            {
                string s = st.LongestPrefixOf(input); //匹配最长前缀
                BinaryStdOut.Write(st.Get(s), W);
                int t = s.Length;
                if (t < input.Length && code < L) //将s加入符号表
                {
                    st.Put(input.Substring(0, t + 1), code++);
                }
                input = input.Substring(t);
            }
            BinaryStdOut.Write(R, W);
        }
Example #4
0
        public void Run()
        {
            Console.WriteLine("Choose file:");     // Prompt
            Console.WriteLine("1 - shellsST.txt"); // Prompt
            Console.WriteLine("or quit");          // Prompt

            var fileNumber = Console.ReadLine();
            var fieName    = string.Empty;

            switch (fileNumber)
            {
            case "1":
                fieName = "shellsST.txt";
                break;

            case "quit":
                return;

            default:
                return;
            }


            var @in     = new In($"Files\\Strings\\{fieName}");
            var content = @in.ReadAllStrings();
            var st      = new TST <Integer>();

            for (var i = 0; i < content.Length; i++)
            {
                st.Put(content[i], i);
            }

            // print results
            if (st.Size() < 100)
            {
                Console.WriteLine("keys(\"\"):");
                foreach (var key in st.Keys())
                {
                    Console.WriteLine($"{key} {st.Get(key).Value}");
                }
                Console.WriteLine();
            }

            Console.WriteLine("longestPrefixOf(\"shellsort\"):");
            Console.WriteLine(st.LongestPrefixOf("shellsort"));
            Console.WriteLine();

            Console.WriteLine("longestPrefixOf(\"shell\"):");
            Console.WriteLine(st.LongestPrefixOf("shell"));
            Console.WriteLine();

            Console.WriteLine("keysWithPrefix(\"shor\"):");
            foreach (var s in st.KeysWithPrefix("shor"))
            {
                Console.WriteLine(s);
            }
            Console.WriteLine();

            Console.WriteLine("keysThatMatch(\".he.l.\"):");
            foreach (var s in st.KeysThatMatch(".he.l."))
            {
                Console.WriteLine(s);
            }


            Console.ReadLine();
        }
Example #5
0
 public void TestLongestPrefixReturnsNullIfNullArgument()
 {
     TST<int> tst = new TST<int>();
     string[] keys = testKeystwo.Split(' ');
     for (int i = 0; i < keys.Length; i++)
     {
         tst.Put(keys[i], i);
     }
     Assert.IsNull(tst.LongestPrefixOf(null));
 }
Example #6
0
 public void TestLongestPrefix()
 {
     TST<int> tst = new TST<int>();
     string[] keys = testKeystwo.Split(' ');
     for (int i = 0; i < keys.Length; i++)
     {
         tst.Put(keys[i], i);
     }
     Assert.IsTrue(tst.LongestPrefixOf("shellsort").Equals("shells"));
     Assert.IsFalse(tst.LongestPrefixOf("shellsort").Equals("she"));
 }