PyTownのファイルシステム
PyTownの世界では、コンピュータ内のファイルは私たちとは異なる方法で整理されています。キーが「フォルダ名」や「ファイル名」を表し、値が「サブフォルダ」を表す辞書か、「ファイル拡張子」を表す文字列となるネストされた辞書で構成されています。例えば、システムを簡略化すると次のようになります:
{
'home': {
'myDocs': {
'file1': 'txt',
'file2': 'doc',
'myPics': {
'pic1': 'jpg',
'pic2': 'jpg'
}
}
},
'etc': {
'configs': {
'config1': 'cfg',
'config2': 'cfg'
}
}
}
あなたのタスクは、このネストされた辞書を再帰的に探索し、特定の拡張子で終わるすべてのファイルを見つけるプログラムを書くことです。
入力の最初の行には、検索する拡張子を表す1つの文字列が含まれています。次の行には、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