Sistema de Ficheiros PyTown
No mundo de PyTown, os ficheiros num computador estão organizados de forma diferente da nossa. Eles são estruturados num dicionário aninhado onde as chaves representam os 'nomes das pastas' ou 'nomes dos ficheiros', e os valores são ou dicionários que representam 'subpastas' ou strings que representam 'extensões de ficheiros'. Por exemplo, uma versão simplificada do sistema pode ser assim:
{
'home': {
'myDocs': {
'file1': 'txt',
'file2': 'doc',
'myPics': {
'pic1': 'jpg',
'pic2': 'jpg'
}
}
},
'etc': {
'configs': {
'config1': 'cfg',
'config2': 'cfg'
}
}
}
A tua tarefa é escrever um programa recursivo que consiga navegar por este dicionário aninhado e encontrar todos os ficheiros que terminam com uma determinada extensão.
A primeira linha da entrada contém uma única string que representa a extensão que estamos à procura. A linha seguinte contém o dicionário aninhado que representa a estrutura de diretórios de PyTown. O dicionário é fornecido como uma string, e precisas de convertê-lo para um dicionário para processamento posterior (usa o módulo
json
para o fazer).O programa deve produzir uma lista de todos os ficheiros que têm a extensão dada. Os ficheiros devem ser representados pelo seu caminho completo separado por uma barra (
/
), semelhante aos sistemas de ficheiros baseados em UNIX. O caminho deve começar pela chave de primeiro nível até ao nome do ficheiro, cada um separado por uma /
. Imprime cada ficheiro numa nova linha.Entrada | Resultado |
cfg
{ "home": { "myDocs": { "file1": "txt", "file2": "doc", "myPics": { "pic1": "jpg", "pic2": "jpg" } } }, "etc": { "configs": { "config1": "cfg", "config2": "cfg" } } } | etc/configs/config1
etc/configs/config2 |
Nota: Os caminhos dos ficheiros devem estar na ordem da sua aparição na entrada. A aninhagem dos dicionários pode ter profundidade arbitrária.
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB