static void Main(string[] args) { var bm = new BoyerMooreSearch(); string pattern = "Sonne"; // hier noch Problem, Alg. liefert bei Index 4 eine Null, laut Lösung aber eine 5 string text = "Sonnige Abschnitte im Schwarzwald, danach ziehen örtlich Gewitter auf und die Sonnenscheindauer beträgt ca. 5 Stunden"; //string pattern = "Fest"; //string text = "Ein Test als Fest."; //string pattern = "ABACABEF"; //string text = "ABABACAABABABEFCABEFABACABEF"; //string pattern = "FBBC"; //string text = "ABABACAABABABEFCABEFABACABEF"; //string pattern = "abbabab"; // hier noch ein Problem, liefert 1001010 nicht den Wert aus der Vorlesung //string text = "aabababacbaaaabdbabababbababbdbdbbababaababbabbababbbbaaabababcbaaababa"; //string pattern = "001010101"; //string text = "0101010101010101010101010101"; Example(pattern, bm); //ExamplePreprocessing(pattern); bm.InitOcc(pattern); bm.Preprocessing(pattern); bm.Search(pattern, text); }
public static void Example(string pattern, BoyerMooreSearch bm) { // Berechnung der Distanztabelle D nach Musteraufgaben var chars = pattern.ToCharArray(); System.Console.Write("j"); for (int i = 0; i < chars.Length; i++) { System.Console.Write("\t" + i); } System.Console.WriteLine(); System.Console.Write("p[j]"); for (int i = 0; i < chars.Length; i++) { System.Console.Write("\t" + chars[i]); } System.Console.WriteLine(); System.Console.Write("occ()"); var occ = new int[chars.Length]; for (int i = 0; i < chars.Length; i++) { occ[i] = bm.GetOccurence(pattern, chars[i]); System.Console.Write("\t" + occ[i]); } System.Console.WriteLine(); System.Console.Write("shift"); var shift = new int[256]; for (int i = 0; i < chars.Length; i++) { shift[i] = -1; } for (int i = 0; i < chars.Length; i++) { shift[chars[i]] = chars.Length - occ[i] - 1; System.Console.Write("\t" + shift[chars[i]]); } for (int i = 0; i < shift.Length; i++) { if (shift[i] == -1) { shift[i] = pattern.Length; } } }