diff options
Diffstat (limited to 'ass2/q3')
| -rw-r--r-- | ass2/q3/lcp.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/ass2/q3/lcp.py b/ass2/q3/lcp.py new file mode 100644 index 0000000..96bd3ff --- /dev/null +++ b/ass2/q3/lcp.py @@ -0,0 +1,43 @@ +from ass2.ukkonen import ukkonen, skip_count, Point, char_is_after, Node + + +# s1 = "abdabc" +# s2 = "daba" +# s1 = "abaabaaba" +# s2 = "baabaaabaa" + +def longest_prefix(root: Node, s1: str, s2: str, suffixes: tuple): + print(s1[suffixes[0]:]) + print(s2[suffixes[1]:]) + matches = 0 + if suffixes[0] == 0: + point = Point(root, s1[0], 1) + else: + point = skip_count(suffixes[0], Point(root), 0) + for i in range(suffixes[1], len(s2) + 1): + print(s2[i], end=" ") + if char_is_after(point, s2[i]): + if point.is_explicit(): + point = Point(point.node, s2[i], 1) + else: + point = skip_count(1, point, i) + matches += 1 + print("found") + else: + print("not found") + break + return matches + + +def main(): + s1 = "abcdacbdab" + s2 = "dacbdabc" + print(s1) + tree = ukkonen(s1) + tree.print_tree() + result = longest_prefix(tree, s1, s2, (0, 5)) + print(result) + + +if __name__ == "__main__": + main() |
