Файловая система PyTown
В мире PyTown файлы на компьютере организованы иначе, чем у нас. Они представлены в виде вложенного словаря, где ключи обозначают имена папок или файлов, а значения — либо словари, представляющие поддиректории, либо строки, обозначающие расширения файлов. Например, упрощённая версия такой системы может выглядеть так:
{
'home': {
'myDocs': {
'file1': 'txt',
'file2': 'doc',
'myPics': {
'pic1': 'jpg',
'pic2': 'jpg'
}
}
},
'etc': {
'configs': {
'config1': 'cfg',
'config2': 'cfg'
}
}
}
Вам нужно написать рекурсивную программу, которая может проходить через этот вложенный словарь и находить все файлы с определённым расширением.
Первая строка входных данных содержит единственную строку — расширение, которое мы ищем. Следующая строка содержит вложенный словарь, представляющий структуру каталогов PyTown. Словарь задан в виде строки, и вам нужно преобразовать его в словарь для дальнейшей обработки (используйте модуль
json
для этого).Программа должна вывести список всех файлов с заданным расширением. Файлы следует указывать с их полным путем, разделённым слешем (
/
), как в UNIX-подобных файловых системах. Путь должен начинаться с ключа первого уровня до имени файла, разделяя каждый уровень /
. Выведите каждый файл на новой строке.Ввод | Вывод |
cfg
{ "home": { "myDocs": { "file1": "txt", "file2": "doc", "myPics": { "pic1": "jpg", "pic2": "jpg" } } }, "etc": { "configs": { "config1": "cfg", "config2": "cfg" } } } | etc/configs/config1
etc/configs/config2 |
Примечание: Пути к файлам должны выводиться в порядке их появления во входных данных. Вложенность словарей может быть произвольной глубины.
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB