Renombrando un Archivo en PyTown
En el mundo virtual de PyTown, cada documento o archivo digital se almacena en directorios y subdirectorios que se representan como diccionarios anidados. El alcalde del pueblo, el Sr. CeePy, tiene la gran responsabilidad de mantener todos estos documentos organizados, nombrados correctamente y fácilmente accesibles. Un día, el Sr. CeePy se dio cuenta de que un archivo muy importante estaba mal nombrado y necesita corregirlo con urgencia.
Tu tarea es ayudar al Sr. CeePy escribiendo un programa recursivo en Python que busque este archivo específico en la estructura de directorios representada por diccionarios anidados y lo renombre si lo encuentra. Aquí, las claves representan nombres de carpetas o de archivos, y los valores son diccionarios que representan subcarpetas o cadenas que representan extensiones de archivos.
La primera línea de la entrada es la estructura de diccionario anidado. Este diccionario representa directorios como claves y como valores tiene un diccionario o una cadena. Las cadenas son extensiones de archivo que, al combinarse con sus claves (nombres de archivo), forman el nombre completo del archivo.
La segunda línea de la entrada es el nombre del archivo existente (con su extensión) que necesita ser encontrado y renombrado.
La tercera línea de la entrada es el nuevo nombre que se le debe asignar al archivo existente.
El programa debe devolver la estructura de diccionario anidado modificada con el archivo renombrado. Si el archivo no se encuentra en la estructura de directorios, el programa debe imprimir
File not found
.Entrada | Salida |
{"home": {"documents": {"report": ".docx", "data": ".csv", "analysis": ".txt"}, "pictures": {"beach": ".jpg", "portrait": ".png"}}, "desktop": {"important": ".pdf", "todo": ".txt"}}
important.pdf
urgent.pdf | {"home": {"documents": {"report": ".docx", "data": ".csv", "analysis": ".txt"}, "pictures": {"beach": ".jpg", "portrait": ".png"}}, "desktop": {"urgent": ".pdf", "todo": ".txt"}} |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB