@@ -26,6 +26,7 @@ def preprocess_text_and_pattern(text: str, pattern: str) -> tuple[list[int], lis
26
26
27
27
return text_int , pattern_int
28
28
29
+
29
30
def fft_convolution (first_seq : list [int ], second_seq : list [int ]) -> np .ndarray :
30
31
"""Performs convolution using the Fast Fourier Transform (FFT).
31
32
@@ -42,8 +43,6 @@ def fft_convolution(first_seq: list[int], second_seq: list[int]) -> np.ndarray:
42
43
return np .real (ifft (first_seq_fft * second_seq_fft ))
43
44
44
45
45
-
46
-
47
46
def compute_a_fft (text_int : list [int ], pattern_int : list [int ]) -> np .ndarray :
48
47
"""Computes the A array for the pattern matching algorithm.
49
48
@@ -73,7 +72,7 @@ def compute_a_fft(text_int: list[int], pattern_int: list[int]) -> np.ndarray:
73
72
sum3 = fft_convolution (p1 [::- 1 ], t3 )
74
73
75
74
# Calculate a[i] using the convolution results
76
- a = sum1 [:n - m + 1 ] - 2 * sum2 [:n - m + 1 ] + sum3 [:n - m + 1 ]
75
+ a = sum1 [: n - m + 1 ] - 2 * sum2 [: n - m + 1 ] + sum3 [: n - m + 1 ]
77
76
# Calculate A[i] using the convolution results
78
77
A = sum1 [: n - m + 1 ] - 2 * sum2 [: n - m + 1 ] + sum3 [: n - m + 1 ]
79
78
@@ -84,12 +83,12 @@ def compute_a_fft(text_int: list[int], pattern_int: list[int]) -> np.ndarray:
84
83
if __name__ == "__main__" :
85
84
# Example test case
86
85
import doctest
86
+
87
87
doctest .testmod ()
88
88
# Get text and pattern as input from the user
89
89
# text = input("Enter the text: ")
90
90
# pattern = input("Enter the pattern (use '*' for wildcard): ")
91
91
92
-
93
92
text = "abcabc"
94
93
pattern = "abc*"
95
94
0 commit comments