def remove_folder(folders: list[str], folder_to_rm: str) -> list[str]: if not folders: return folders if not isinstance(folder_to_rm, str): raise ValueError('Enter a valid folder name') new_folders = [] for i, folder in enumerate(folders): folder_names = folder.split('/')[1:] if folder_names[0] == folder_to_rm: del folders[i] continue for i, folder_name in enumerate(folder_names): if folder_name == folder_to_rm: folder = ''.join([f'/{f}' for f in folder_names[:i]]) break if folder not in new_folders: new_folders.append(folder) return new_folders def test_examples(): assert remove_folder( ['/a', '/a/b', '/c/d', '/c/d/e', '/c/f', '/c/f/g'], 'c' ) == ['/a', '/a/b'] assert remove_folder( ['/a', '/a/b', '/c/d', '/c/d/e', '/c/f', '/c/f/g'], 'd' ) == ['/a', '/a/b', '/c', '/c/f', '/c/f/g'] def test_folder_in_the_end(): assert remove_folder(['/a/b/c', '/c/d', '/d/c'], 'd') == ['/a/b/c', '/c'] def test_folder_not_found(): assert remove_folder(['/a/b/c', '/d/e/f'], 'g') == ['/a/b/c', '/d/e/f'] if __name__ == '__main__': test_examples() test_folder_in_the_end() test_folder_not_found()