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); }
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); }
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); }
//Tests if KMP just passes by public void RunTest() { string s = " ABC ABCDAB ABCDABCDABDE"; string pattern = "ABCDABD"; KMP.Find(pattern, s); }
public void TestIndex() { string s = "ABC ABCDAB ABCDABCDABDE"; string pattern = "ABCDABD"; Assert.AreEqual(15, KMP.Find(pattern, s)); }
public void TestKMP() { var kmp = new KMP("ababc"); Debug.WriteLine(kmp.Match("abababc")); Debug.WriteLine(kmp.Match("abd")); }
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); }
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); }
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); }
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; }
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); }
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); }
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 }); }
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); }
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"); }
public void Contains_SubstringMatchNoBackTracking_ReturnsTrue() { Assert.IsTrue(KMP.Contains("ab", "jdhfgfabsdkfh")); }
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!"); } } }
public void Find_MatchWithTableLookup_ReturnsTrue() { Assert.AreEqual(KMP.Find("AAACAAAA", "AAAAACAAAA"), 2); }
public void Find_NoMatch_ReturnsFalse() { Assert.AreEqual(KMP.Find("ab", "vvvvvvv"), -1); }
public void Find_SubstringMatchNoBackTracking_ReturnsTrue() { Assert.AreEqual(KMP.Find("ab", "jdhfgfabsdkfh"), 6); }
public void Contains_MatchWithTableLookup_ReturnsTrue() { Assert.IsTrue(KMP.Contains("AAACAAAA", "AAAAACAAAA")); }
public void Contains_NoMatch_ReturnsFalse() { Assert.IsFalse(KMP.Contains("ab", "vvvvvvv")); }
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); }
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>"); } } } } } }
public void Find_PerfectMatch_ReturnsTrue() { Assert.AreEqual(KMP.Find("AAACAAAA", "AAACAAAA"), 0); }
public void Contains_PerfectMatch_ReturnsTrue() { Assert.IsTrue(KMP.Contains("AAACAAAA", "AAACAAAA")); }