PyTown-Dateisystem

In der Welt von PyTown sind die Dateien auf einem Computer anders angeordnet als bei uns. Sie sind in einem verschachtelten Dictionary organisiert, in dem Schlüssel die 'Ordnernamen' oder 'Dateinamen' darstellen und die Werte entweder Dictionaries für 'Unterordner' oder Strings für 'Dateierweiterungen' sind. Zum Beispiel könnte eine vereinfachte Version des Systems so aussehen:
{
    'home': {
        'myDocs': {
            'file1': 'txt',
            'file2': 'doc',
            'myPics': {
                'pic1': 'jpg',
                'pic2': 'jpg'
            }
        }
    },
    'etc': {
        'configs': {
            'config1': 'cfg',
            'config2': 'cfg'
        }
    }
}
Deine Aufgabe ist es, ein rekursives Programm zu schreiben, das dieses verschachtelte Dictionary durchlaufen und alle Dateien finden kann, die mit einer bestimmten Erweiterung enden.
Die erste Zeile der Eingabe enthält einen einzelnen String, der die Erweiterung darstellt, nach der wir suchen. Die nächste Zeile enthält das verschachtelte Dictionary, das die Verzeichnisstruktur von PyTown repräsentiert. Das Dictionary wird als String gegeben, und du musst es für die weitere Verarbeitung in ein Dictionary umwandeln (verwende dazu das json-Modul).
Das Programm sollte eine Liste aller Dateien ausgeben, die die gegebene Erweiterung haben. Die Dateien sollten durch ihren vollständigen Pfad dargestellt werden, getrennt durch einen Schrägstrich (/), ähnlich wie bei UNIX-basierten Dateisystemen. Der Pfad sollte vom Schlüssel der obersten Ebene bis zum Dateinamen reichen, jeweils getrennt durch ein /. Drucke jede Datei in einer neuen Zeile aus.
Eingabe
Ausgabe
cfg { "home": { "myDocs": { "file1": "txt", "file2": "doc", "myPics": { "pic1": "jpg", "pic2": "jpg" } } }, "etc": { "configs": { "config1": "cfg", "config2": "cfg" } } }
etc/configs/config1 etc/configs/config2
Hinweis: Die Dateipfade sollten in der Reihenfolge ihres Auftretens in der Eingabe sein. Die Verschachtelung der Dictionaries kann beliebig tief sein.
 

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