def swap_fragment(self, seed): """Substitutes a random fragment with another with the same symbol""" if seed.has_structure: n_nodes = self.count_nodes(seed.structure) self.to_swap = random.randint(2, n_nodes) new_structure = self.recursive_swap(seed.structure) new_seed = Seed(tree_to_string(new_structure)) new_seed.has_structure = True new_seed.structure = new_structure return new_seed return seed
def delete_fragment(self, seed): """Deletes a random fragment""" if seed.has_structure: n_nodes = self.count_nodes(seed.structure) self.to_delete = random.randint(2, n_nodes) new_structure = self.recursive_delete(seed.structure) new_seed = Seed(tree_to_string(new_structure)) new_seed.has_structure = True new_seed.structure = new_structure # do not return an empty new_seed if not new_seed.data: return seed else: return new_seed return seed