from ass2.ukkonen import Node, ukkonen import sys def depth_first_apply(node: Node, func): if not node.children: func(node.suffix_index) else: for child in node.children.ordered_items(): depth_first_apply(child, func) def read_in_string(filename): with open(filename, "r") as file: return file.read() def suffix_array(string): tree = ukkonen(string) buffer = [] depth_first_apply(tree, buffer.append) return buffer def write_suffix_array(string, filename): with open(filename, "w") as file: buffer = suffix_array(string) file.write("\n".join(map(str, buffer))) def main(): assert len(sys.argv) == 2 string = read_in_string(sys.argv[1]) write_suffix_array(string, "output_suffix_array.txt") if __name__ == "__main__": main()