diff --git a/wizard-work/beam/aho_corasick.py b/wizard-work/beam/aho_corasick.py index bb82851..9758f82 100644 --- a/wizard-work/beam/aho_corasick.py +++ b/wizard-work/beam/aho_corasick.py @@ -58,14 +58,14 @@ class AhoCorasick: for pi in self.out[node]: plen = len(self.patterns[pi]) if plen == 0: - start = i - else: - start = i + 1 - plen + continue # handled below for every position + start = i + 1 - plen res.append((start, pi)) - # empty patterns also match at the end position + # empty patterns match at every position 0..n for pi, p in enumerate(self.patterns): if p == "": - res.append((n, pi)) + for pos in range(n + 1): + res.append((pos, pi)) res.sort(key=lambda x: (x[0], x[1])) return res