Exemple #1
0
        private static void SearchPattern(string pat, string txt)
        {
            var pattern = pat.ToCharArray();
            var text    = txt.ToCharArray();

            var kmp1    = new KMP(pat);
            var offset1 = kmp1.Search(txt);

            var kmp2    = new KMP(pattern, 256);
            var offset2 = kmp2.Search(text);

            // print results
            Console.WriteLine("text:    " + txt);

            Console.Write("pattern: ");
            for (var i = 0; i < offset1; i++)
            {
                Console.Write(" ");
            }
            Console.WriteLine(pat);

            Console.Write("pattern: ");
            for (var i = 0; i < offset2; i++)
            {
                Console.Write(" ");
            }
            Console.WriteLine(pat);
        }
Exemple #2
0
        public byte[] Write()
        {
            byte[] m;
            KMP    kmp_data;

            kmp_data = new KMP();

            kmp_data.KartPoint       = StartPositions.ToKTPT();
            kmp_data.EnemyPoint      = EnemyRoutes.ToENPT();
            kmp_data.EnemyPointPath  = EnemyRoutes.ToENPH();
            kmp_data.ItemPoint       = ItemRoutes.ToITPT();
            kmp_data.ItemPointPath   = ItemRoutes.ToITPH();
            kmp_data.CheckPoint      = CheckPoints.ToCKPT();
            kmp_data.CheckPointPath  = CheckPoints.ToCKPH();
            kmp_data.GlobalObject    = Objects.ToGOBJ();
            kmp_data.PointInfo       = Routes.ToPOTI();
            kmp_data.Area            = Area.ToAREA();
            kmp_data.Camera          = Camera.ToCAME();
            kmp_data.JugemPoint      = RespawnPoints.ToJGPT();
            kmp_data.CourseSect      = new KMPSections.CORS();
            kmp_data.CannonPoint     = new KMPSections.CNPT();
            kmp_data.MissionPoint    = new KMPSections.MSPT();
            kmp_data.StageInfo       = StageInformation.ToSTGI();
            kmp_data.GliderPoint     = GliderRoutes.ToGLPT();
            kmp_data.GliderPointPath = GliderRoutes.ToGLPH();

            m = kmp_data.Write();
            return(m);
        }
Exemple #3
0
        public static string parseAntaraKMP(string url)
        {
            WebClient W    = new WebClient();
            string    page = W.DownloadString(url);
            int       idx  = KMP.kmpMatch(page, "content_news") + 20;

            if (idx < 0)
            {
                Console.WriteLine("isi berita tidak ditemukan");
            }
            else
            {
                page = page.Substring(idx);
            }
            idx = KMP.kmpMatch(page, "mt10") - 10;
            if (idx < 0)
            {
                Console.WriteLine("isi berita tidak ditemukan");
            }
            else
            {
                page = page.Substring(0, idx);
            }
            idx = KMP.kmpMatch(page, "<br>");
            while (idx != -1)
            {
                string front = page.Substring(0, idx);
                string end   = page.Substring(idx + 4);
                page = front + end;
                idx  = KMP.kmpMatch(page, "<br>");
            }
            return(page);
        }
        public void String_KMP_Test()
        {
            var algorithm = new KMP();

            var index = algorithm.Search("xabcabzabc", "abc");

            Assert.AreEqual(1, index);

            index = algorithm.Search("abdcdaabxaabxcaabxaabxay", "aabxaabxcaabxaabxay");

            Assert.AreEqual(5, index);

            index = algorithm.Search("aaaabaaaaaaa", "aaaa");

            Assert.AreEqual(0, index);

            index = algorithm.Search("abcabababdefgabcd", "fga");

            Assert.AreEqual(11, index);

            index = algorithm.Search("abxabcabcaby", "abcaby");

            Assert.AreEqual(6, index);

            index = algorithm.Search("abxabcabcaby", "abx");

            Assert.AreEqual(0, index);
        }
Exemple #5
0
        //Tests if KMP just passes by
        public void RunTest()
        {
            string s       = " ABC ABCDAB ABCDABCDABDE";
            string pattern = "ABCDABD";

            KMP.Find(pattern, s);
        }
Exemple #6
0
        public void TestIndex()
        {
            string s       = "ABC ABCDAB ABCDABCDABDE";
            string pattern = "ABCDABD";

            Assert.AreEqual(15, KMP.Find(pattern, s));
        }
Exemple #7
0
        public void TestKMP()
        {
            var kmp = new KMP("ababc");

            Debug.WriteLine(kmp.Match("abababc"));
            Debug.WriteLine(kmp.Match("abd"));
        }
Exemple #8
0
        public void BuildTable_LargePrefix()
        {
            int[] expected = new[] { 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5 };
            var   pattern  = "abcdefabcdef";
            var   result   = KMP.BuildLookupTable(pattern);

            CollectionAssert.AreEqual(result, expected);
        }
Exemple #9
0
        public void BuildTable_TwoPrefixes()
        {
            int[] expected = new[] { 0, 0, 1, 0, 1 };
            var   pattern  = "aacaa";
            var   result   = KMP.BuildLookupTable(pattern);

            CollectionAssert.AreEqual(result, expected);
        }
    public int FindCategoryKMP(TwitterStatus tweet, List <StringPattern> Final)
    {
        int    kategori           = 0;
        String TField             = tweet.Text.ToLower();
        List <StringPattern> Find = new List <StringPattern>();

        foreach (var item in Final)
        {
            if (item.Next == null)
            {
                KMP kmp = new KMP(item.Data.ToLower());
                if (kmp.Search(TField) != -1)
                {
                    Find.Add(item);
                }
            }
            else
            {
                StringPattern P = new StringPattern();
                P = item;
                bool valid = true;
                while (P != null)
                {
                    KMP kmp = new KMP(P.Data.ToLower());
                    if (kmp.Search(TField) == -1)
                    {
                        valid = false;
                        break;
                    }
                    P = P.Next;
                }
                if (valid == true)
                {
                    Find.Add(item);
                }
            }
        }
        int min = 999;

        foreach (var item in Find)
        {
            KMP kmp = new KMP(item.Data.ToLower());
            if (kmp.Search(TField) < min)
            {
                min = kmp.Search(TField);
            }
        }
        foreach (var item in Find)
        {
            KMP kmp = new KMP(item.Data.ToLower());
            if (kmp.Search(TField) == min)
            {
                kategori = item.Kategori;
            }
        }
        return(kategori);
    }
Exemple #11
0
    private static ArrayList GetOccurences(string pattern, string targetString)
    {
        ArrayList result;

        int[]  transitionArray;
        char[] charArray;
        char[] patternArray;

        charArray    = targetString.ToLower().ToCharArray();
        patternArray = pattern.ToLower().ToCharArray();
        result       = new ArrayList();

        KMP prefixArray = new KMP(pattern);

        transitionArray = prefixArray.TransitionArray;

        int k = 0;

        for (int i = 0; i < charArray.Length; i++)
        {
            if (charArray[i] == patternArray[k])
            {
                k++;
            }
            else
            {
                int prefix = transitionArray[k];

                if (prefix + 1 > patternArray.Length &&
                    charArray[i] != patternArray[prefix + 1])
                {
                    k = 0;
                }
                else
                {
                    k = prefix;
                }
            }

            if (k == patternArray.Length)
            {
                result.Add(i - (patternArray.Length - 1));

                k = transitionArray[k - 1];
            }
        }

        return(result);
    }
Exemple #12
0
    private static ArrayList GetOccurences(string pattern, string targetString)
    {
        ArrayList result;
        int[] transitionArray;
        char[] charArray;
        char[] patternArray;

        charArray = targetString.ToLower().ToCharArray();
        patternArray = pattern.ToLower().ToCharArray();
        result = new ArrayList();

        KMP prefixArray = new KMP(pattern);
        transitionArray = prefixArray.TransitionArray;

        int k = 0;

        for (int i = 0; i < charArray.Length; i++)
        {
            if (charArray[i] == patternArray[k])
            {
                k++;
            }
            else
            {
                int prefix = transitionArray[k];

                if (prefix + 1 > patternArray.Length &&
                    charArray[i] != patternArray[prefix + 1])
                {

                    k = 0;
                }
                else
                {
                    k = prefix;
                }
            }

            if (k == patternArray.Length)
            {
                result.Add(i - (patternArray.Length - 1));

                k = transitionArray[k - 1];
            }
        }

        return result;
    }
Exemple #13
0
    public bool RotateString(string A, string B)
    {
        if (A.Length == 0 && B.Length == 0)
        {
            return(true);
        }
        if (A.Length != B.Length)
        {
            return(false);
        }

        var A1  = A + A;
        var kmp = new KMP();

        var res = kmp.KMPSearch(A1, B);

        return(res >= 0);
    }
Exemple #14
0
        public void TestKMPNextArray()
        {
            var s        = "ababaab";
            var kmp      = new KMP();
            var arr      = kmp.GetNextArr(s);
            var expected = new int[] { -1, -1, 0, 1, 2, 0, 1 };
            var success  = true;

            Assert.AreEqual(expected.Length, arr.Length);
            for (var i = 0; i < arr.Length; i++)
            {
                if (arr[i] != expected[i])
                {
                    success = false;
                }
            }
            Assert.AreEqual(true, success);
        }
Exemple #15
0
    public static void Main(string[] args)
    {
        KMP.CheckEQ(KMP.Build("ABCDABD"), new List <int> {
            0, 0, 0, 0, 0, 1, 2, 0
        });
        KMP.CheckEQ(KMP.Build("AB"), new List <int> {
            0, 0, 0
        });
        KMP.CheckEQ(KMP.Build("A"), new List <int> {
            0, 0
        });
        KMP.CheckEQ(KMP.Build("AA"), new List <int> {
            0, 0, 1
        });
        KMP.CheckEQ(KMP.Build("AAAA"), new List <int> {
            0, 0, 1, 2, 3
        });
        KMP.CheckEQ(KMP.Build("AABA"), new List <int> {
            0, 0, 1, 0, 1
        });


        KMP.CheckEQ(KMP.Match("ABC ABCDAB ABCDABCDABDE", "ABCDABD"), new List <int> {
            15
        });
        KMP.CheckEQ(KMP.Match("ABC ABCDAB ABCDABCDABDE", "AB"), new List <int> {
            0, 4, 8, 11, 15, 19
        });
        KMP.CheckEQ(KMP.Match("ABC ABCDAB ABCDABCDABDE", "B"), new List <int> {
            1, 5, 9, 12, 16, 20
        });
        KMP.CheckEQ(KMP.Match("AAAAA", "A"), new List <int> {
            0, 1, 2, 3, 4
        });
        KMP.CheckEQ(KMP.Match("AAAAA", "AA"), new List <int> {
            0, 1, 2, 3
        });
        KMP.CheckEQ(KMP.Match("AAAAA", "AAA"), new List <int> {
            0, 1, 2
        });
        KMP.CheckEQ(KMP.Match("ABC", "ABC"), new List <int> {
            0
        });
    }
Exemple #16
0
        public SimpleKMP(byte[] data)
        {
            KMP kmp_data;

            kmp_data = new KMP(data);

            StartPositions       = new StartPositions(kmp_data.KartPoint);
            EnemyRoutes          = new EnemyRoutes(kmp_data.EnemyPoint, kmp_data.EnemyPointPath);
            ItemRoutes           = new ItemRoutes(kmp_data.ItemPoint, kmp_data.ItemPointPath);
            CheckPoints          = new CheckPoints(kmp_data.CheckPoint, kmp_data.CheckPointPath);
            Objects              = new Objects(kmp_data.GlobalObject);
            Routes               = new Routes(kmp_data.PointInfo);
            Area                 = new Area(kmp_data.Area);
            Camera               = new Camera(kmp_data.Camera);
            RespawnPoints        = new RespawnPoints(kmp_data.JugemPoint);
            GliderRoutes         = new GliderRoutes(kmp_data.GliderPoint, kmp_data.GliderPointPath);
            StageInformation     = new StageInformation(kmp_data.StageInfo);
            currentCullingRoutes = new List <int>();
        }
        private void _searchTextBox_OnTextChange(string oldString, string curString)
        {
            curString = curString.Trim(' ');
            if (curString == "")
            {
                _itemGrid.Clear();
                _itemGrid.AddRange(uISlots);
                return;
            }
            var kmp = new KMP(curString.ToLower());

            _itemGrid.Clear();
            var slots = new List <UISimpleSlot>();

            for (var i = 1; i < Main.itemTexture.Length; i++)
            {
                if (kmp.Match(uISlots[i - 1].Item.Name.ToLower()))
                {
                    slots.Add(uISlots[i - 1]);
                }
            }
            _itemGrid.AddRange(slots);
        }
        private void _searchTextBox_OnTextChange(string oldString, string curString)
        {
            curString = curString.Trim(' ');
            if (curString == "")
            {
                _npcGrid.Clear();
                _npcGrid.AddRange(uISlots);
                return;
            }
            var kmp = new KMP(curString.ToLower());

            _npcGrid.Clear();
            var slots = new List <UISimpleSlot>();

            for (var i = 0; i < uISlots.Count; i++)
            {
                if (kmp.Match(Lang.GetNPCNameValue(uISlots[i].Npc.netID).ToLower()))
                {
                    slots.Add(uISlots[i]);
                }
            }
            _npcGrid.AddRange(slots);
        }
    public String SearchLocat(TwitterStatus tweet)
    {
        String locat  = "";
        String s      = "di ";
        String TField = tweet.Text.ToLower();
        KMP    kmp    = new KMP(s);

        if (kmp.Search(TField) != -1)
        {
            int    begin = kmp.Search(TField) + s.Length;
            String temp  = "";
            for (int i = begin; i < TField.Length; i++)
            {
                if (TField[i] != ' ')
                {
                    temp = temp + TField[i];
                }
                else
                {
                    if (temp != "")
                    {
                        if (MatchLocat(temp))
                        {
                            locat = locat + temp;
                            temp  = "";
                        }
                        else
                        {
                            locat = locat + temp;
                            return(locat);
                        }
                    }
                }
            }
        }
        return(locat);
    }
Exemple #20
0
        public static string parseHTML(string url, int method)
        {
            switch (method)
            {
            case 0:
                if (KMP.kmpMatch(url, "detik.com") != -1)
                {
                    return(parseDetikKMP(url));
                }
                else if (KMP.kmpMatch(url, "tempo.co") != -1)
                {
                    return(parseTempoKMP(url));
                }
                else if (KMP.kmpMatch(url, "viva") != -1)
                {
                    return(parseVivaKMP(url));
                }
                else if (KMP.kmpMatch(url, "antara") != -1)
                {
                    return(parseAntaraKMP(url));
                }
                break;

            case 1:
                if (BM.bmMatch(url, "detik.com") != -1)
                {
                    return(parseDetikBM(url));
                }
                else if (BM.bmMatch(url, "tempo.co") != -1)
                {
                    return(parseTempoBM(url));
                }
                else if (BM.bmMatch(url, "viva") != -1)
                {
                    return(parseVivaBM(url));
                }
                else if (BM.bmMatch(url, "antara") != -1)
                {
                    return(parseAntaraBM(url));
                }
                break;

            case 2:
                if (RegexC.regexMatch(url, "detik.com") != -1)
                {
                    return(parseDetikRegex(url));
                }
                else if (RegexC.regexMatch(url, "tempo.co") != -1)
                {
                    return(parseTempoRegex(url));
                }
                else if (RegexC.regexMatch(url, "viva") != -1)
                {
                    return(parseVivaRegex(url));
                }
                else if (RegexC.regexMatch(url, "antara") != -1)
                {
                    return(parseAntaraRegex(url));
                }
                break;
            }
            return("Salah URL");
        }
Exemple #21
0
 public void Contains_SubstringMatchNoBackTracking_ReturnsTrue()
 {
     Assert.IsTrue(KMP.Contains("ab", "jdhfgfabsdkfh"));
 }
Exemple #22
0
 private void openKMPToolStripMenuItem_Click(object sender, EventArgs e)
 {
     DialogResult result = openKMP.ShowDialog(); // Show the dialog.
     if (result == DialogResult.OK) // Test result.
     {
         string path = openKMP.FileName;
         try
         {
             keiempi = new KMP(File.ReadAllBytes(path));
             SizeOfKMP = keiempi.Data.Length;
             CheckHeader();
             checkSectPoint();
         }
         catch (IOException)
         {
             MessageBox.Show("Error when reading from file!");
         }
     }
 }
Exemple #23
0
 public void Find_MatchWithTableLookup_ReturnsTrue()
 {
     Assert.AreEqual(KMP.Find("AAACAAAA", "AAAAACAAAA"), 2);
 }
Exemple #24
0
 public void Find_NoMatch_ReturnsFalse()
 {
     Assert.AreEqual(KMP.Find("ab", "vvvvvvv"), -1);
 }
Exemple #25
0
 public void Find_SubstringMatchNoBackTracking_ReturnsTrue()
 {
     Assert.AreEqual(KMP.Find("ab", "jdhfgfabsdkfh"), 6);
 }
Exemple #26
0
 public void Contains_MatchWithTableLookup_ReturnsTrue()
 {
     Assert.IsTrue(KMP.Contains("AAACAAAA", "AAAAACAAAA"));
 }
Exemple #27
0
 public void Contains_NoMatch_ReturnsFalse()
 {
     Assert.IsFalse(KMP.Contains("ab", "vvvvvvv"));
 }
Exemple #28
0
 public void Find_MatchSubstringWithTableLookup_ReturnsTrue()
 {
     Assert.AreEqual(KMP.Find("ababab", "abacaabababab"), 5);
 }
        public void Matches(string pattern, string target, IEnumerable <int> indexes)
        {
            var kmp = KMP.Create(pattern);

            kmp.Matches(target).ToList().Should().Equal(indexes);
        }
Exemple #30
0
 private void injectbin_Click(object sender, EventArgs e)
 {
     DialogResult result = openBinary.ShowDialog(); // Show the dialog.
     if (result == DialogResult.OK) // Test result.
     {
         string path = openBinary.FileName;
         try
         {
             bin = new KMP(File.ReadAllBytes(path));
             ImportBin();
         }
         catch (IOException)
         {
             MessageBox.Show("Error when reading from file!");
         }
     }
 }
        private void GetQuery(string Query, ITweet[] Tweet, QueryCategory A, ref bool[] N, Tags tag)
        {
            int k;
            int l;
            int y;

            y = 0;
            for (int j = 0; j < jumlahtweetygdidapat; j++)
            {
                string queryX = Query;
                string querySearch;
                bool   queryBool = false;
                k = 0;
                l = 0;
                int        X  = -1;
                List <int> q  = new List <int>();
                List <int> ql = new List <int>();
                if (queryX != null)
                {
                    string thequery = "";
                    while (k < queryX.Length)
                    {
                        bool qfound = false;
                        while (queryX[k] == ' ' && k < queryX.Length)
                        {
                            k++;
                        }
                        int x = k;
                        while (!qfound && k < queryX.Length)
                        {
                            if (queryX[k] == ',')
                            {
                                qfound = true;
                            }
                            k++;
                        }
                        if (qfound)
                        {
                            querySearch = queryX.Substring(x, k - x - 1);
                        }
                        else
                        {
                            querySearch = queryX.Substring(x, k - x);
                        }
                        if (tag.isKMP)
                        {
                            X = KMP.solve(Tweet[j].Text, querySearch);
                        }
                        else
                        {
                            X = Booyer.solve(Tweet[j].Text, querySearch);
                        }
                        thequery = querySearch;
                        q.Add(X);
                        ql.Add(querySearch.Length);
                        if (X != -1)
                        {
                            queryBool = true;
                        }
                        l++;
                    }
                    if (queryBool)
                    {
                        N[j] = true;
                        HasilTweet Ax = new HasilTweet();
                        foreach (int value in q)
                        {
                            Ax.StartMark.Add(value);
                        }
                        foreach (int value in ql)
                        {
                            Ax.QueryLength.Add(value);
                        }
                        Ax.TweetContent = Tweet[j];
                        A.Tweet.Add(Ax);
                        A.num++;
                        Ax.result = Ax.TweetContent.Text;
                        foreach (int pos in Ax.StartMark)
                        {
                            if (pos != -1)
                            {
                                int    i = Ax.StartMark.IndexOf(pos);
                                string n = Ax.result.Substring(pos, Ax.QueryLength.ElementAt(i));
                                Ax.result = Ax.result.Replace(n, "<strong>" + n + "</strong>");
                            }
                        }
                    }
                }
            }
        }
Exemple #32
0
 public void Find_PerfectMatch_ReturnsTrue()
 {
     Assert.AreEqual(KMP.Find("AAACAAAA", "AAACAAAA"), 0);
 }
Exemple #33
0
 public void Contains_PerfectMatch_ReturnsTrue()
 {
     Assert.IsTrue(KMP.Contains("AAACAAAA", "AAACAAAA"));
 }