Renomear um Ficheiro em PyTown

No mundo virtual de PyTown, todos os documentos ou ficheiros digitais são armazenados em diretórios e subdiretórios que são representados como dicionários aninhados. O presidente da câmara, o Sr. CeePy, tem a grande responsabilidade de manter todos estes documentos organizados, corretamente nomeados e facilmente acessíveis. Um dia, o Sr. CeePy apercebeu-se de que um ficheiro muito importante estava mal nomeado e precisa de o corrigir urgentemente.

A tua tarefa é ajudar o Sr. CeePy, escrevendo um programa recursivo em Python para procurar este ficheiro específico na estrutura de diretórios representada pelo dicionário aninhado e renomeá-lo se for encontrado. Aqui, as chaves representam nomes de pastas ou de ficheiros, e os valores são ou dicionários que representam subpastas ou strings que representam extensões de ficheiros.

A primeira linha da entrada é a estrutura do dicionário aninhado. Este dicionário representa os diretórios como chaves e tem como valores ou um dicionário ou uma string. As strings são extensões de ficheiros que, quando combinadas com as suas chaves (nomes de ficheiros), formam o nome completo do ficheiro.

A segunda linha da entrada é o nome do ficheiro existente (com a sua extensão) que precisa de ser encontrado e renomeado.

A terceira linha da entrada é o novo nome para o qual o ficheiro existente deve ser renomeado.

O programa deve retornar a estrutura do dicionário aninhado modificada com o ficheiro renomeado. Se o ficheiro não for encontrado na estrutura de diretórios, o programa deve imprimir File not found.

Entrada

Saída

{"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

To check your solution you need to sign in
Sign in to continue