Materi
Kantor pemasaran mewarisi satu cakram arsip yang foldernya bersarang tanpa aturan. Sebelum dipindahkan ke penyimpanan baru, tim perlu tahu tiga hal: berapa ukuran totalnya, berkas apa saja yang ada beserta jalurnya, dan seberapa dalam folder terdalamnya, karena layanan penyimpanan baru membatasi kedalaman folder.
Arsip itu dibaca sebagai dict. Setiap kunci adalah nama; nilainya bilangan bulat bila itu berkas (ukuran dalam KB), atau dict lain bila itu folder. Folder boleh kosong. Bentuk ini persis bentuk yang rekursif: isi sebuah folder adalah arsip yang lebih kecil. Ketiga latihan kode memakai arsip contoh yang sama supaya hasilnya bisa dicocokkan satu sama lain.
arsip = {
"laporan.pdf": 120,
"foto": {"a.jpg": 300, "lama": {"b.jpg": 50}},
"kosong": {},
}Untuk setiap latihan, tentukan dulu tiga hal sebelum menulis kode: apa jawaban untuk folder kosong (kasus dasar), apa yang dilakukan pada satu berkas, dan bagaimana hasil dari subfolder digabung dengan hasil di tingkat ini. Kedalaman dihitung sebagai banyaknya tingkat yang dilewati sampai berkas terdalam: berkas di akar berkedalaman 1, dan folder yang tidak berisi berkas sama sekali berkedalaman 0.