Filesystem di PyTown
Nel mondo di PyTown, i file in un computer sono organizzati in modo diverso rispetto al nostro. Sono strutturati in un dizionario annidato dove le chiavi rappresentano i 'nomi delle cartelle' o i 'nomi dei file', e i valori sono o dizionari che rappresentano 'sottocartelle' o stringhe che rappresentano le 'estensioni dei file'. Ad esempio, una versione semplificata del sistema potrebbe apparire così:
{
'home': {
'myDocs': {
'file1': 'txt',
'file2': 'doc',
'myPics': {
'pic1': 'jpg',
'pic2': 'jpg'
}
}
},
'etc': {
'configs': {
'config1': 'cfg',
'config2': 'cfg'
}
}
}
Il tuo compito è scrivere un programma ricorsivo che possa navigare attraverso questo dizionario annidato e trovare tutti i file che terminano con una particolare estensione.
La prima linea dell'input contiene una singola stringa che rappresenta l'estensione che stiamo cercando. La linea successiva contiene il dizionario annidato che rappresenta la struttura delle directory di PyTown. Il dizionario è dato come una stringa, e devi convertirlo in un dizionario per ulteriori elaborazioni (usa il modulo
json
per farlo).Il programma dovrebbe produrre una lista di tutti i file che hanno l'estensione data. I file dovrebbero essere rappresentati dal loro percorso completo separato da una barra (
/
), simile ai file system basati su UNIX. Il percorso dovrebbe iniziare dalla chiave di primo livello fino al nome del file, ciascuno separato da una /
. Stampa ogni file su una nuova linea.Input | Output |
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: I percorsi dei file devono essere nell'ordine della loro apparizione nell'input. L'annidamento dei dizionari può essere di profondità arbitraria.
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB