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