Skip to content

Instantly share code, notes, and snippets.

@kendhia
Last active October 20, 2020 20:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kendhia/405527f2586ec6ecccea2c75400ddded to your computer and use it in GitHub Desktop.
Save kendhia/405527f2586ec6ecccea2c75400ddded to your computer and use it in GitHub Desktop.
class File:
def __init__(self, id, name) -> None:
self.id = id
self.name = name
def __eq__(self, other):
return self.id == other
def __repr__(self):
return f"Name: {self.name} ID: {self.id}"
class Folder:
def __init__(self, id, name) -> None:
self.id = id
self.name = name
self.files = []
def __eq__(self, other):
return self.id == other.id
def __repr__(self):
return f"Name: {self.name} ID: {self.id} files: {self.files}\n\n"
def move(folders, source_file: int, destination_folder: int):
file = None
for folder in folders:
if folder.id == source_file:
raise Exception("Source File ID cannot be a folder ID")
if destination_folder in folder.files:
raise Exception("Dest Folder ID cannot be a file ID")
if source_file in folder.files:
file = folder.files[folder.files.index(source_file)]
folder.files.remove(file)
break
if not file:
raise Exception("File specified cannot be found")
temp_folder = Folder(destination_folder, "")
folder_index = folders.index(temp_folder)
folders[folder_index].files.append(file)
return folders
if __name__ == "__main__":
folder1 = Folder(1, "folder 1")
folder1.files.append(File(2, "File 1"))
folder1.files.append(File(3, "File 2"))
folder1.files.append(File(4, "File 3"))
folder2 = Folder(15, "folder 2")
folder2.files.append(File(5, "File 4"))
list_folders = [folder1, folder2]
res = move(list_folders, 3, 15)
print(res)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment