Menu
CoddyTech

Statistik Kontak

Termasuk bagian Logika & Alur dalam perjalanan Kotlin di Coddy. Pelajaran 25 dari 63.

challenge icon

Tantangan

Sulit

Lengkapi contactBook dengan parameter commands: List<String>, names: List<String>, phones: List<String>. Buat buku kontak di memori yang dimulai dalam keadaan kosong pada setiap pemanggilan fungsi. Ketiga list memiliki panjang yang sama, paling banyak 100. Pada setiap indeks, commands memilih operasi, sedangkan names dan phones menyediakan argumennya. Nama berupa kata ASCII huruf kecil yang tidak kosong, sedangkan nomor telepon berupa string digit yang tidak kosong dan harus tetap berupa string agar angka nol di awal tetap terjaga. Setiap perintah menghasilkan satu balasan dalam list yang dikembalikan. Pertahankan semua yang kamu tulis pada langkah sebelumnya, termasuk semua perintah dan balasan sebelumnya. Dukung PUT: simpan atau ganti nomor telepon untuk nama yang diberikan, lalu balas saved. Tambahkan FIND: balas dengan nomor telepon tersimpan untuk nama yang diberikan, atau missing. Argumen nomor teleponnya diabaikan. Tambahkan REMOVE: hapus nama yang diberikan dan balas removed jika nama itu ada atau missing jika tidak ada. Argumen nomor teleponnya diabaikan. Tambahkan LIST: balas dengan list nama tersimpan yang diurutkan dalam format bertanda kurung siku standar Kotlin, misalnya [ada, bo], atau [] jika kosong. Kedua nilai argumen diabaikan. Gunakan contacts.keys.sorted().toString() untuk membuat satu string balasan ini. Tambahkan COUNT: balas dengan contacts=N;phones=P, dengan N diganti jumlah nama tersimpan dan P diganti jumlah string nomor telepon tersimpan yang berbeda. Kedua argumen diabaikan. Dua nama boleh memiliki nomor telepon yang sama. Input hanya berisi perintah yang didukung pada langkah ini. String argumen yang diabaikan dapat berupa teks apa pun yang tidak kosong.

Kecuali jika batas yang lebih ketat dinyatakan di atas, koleksi berisi paling banyak 100 elemen pada setiap tingkat, dan argumen integer serta nilai integer dalam koleksi berada di antara -1000 dan 1000. Teks yang diberikan untuk diuraikan dapat berisi representasi yang tidak valid atau di luar rentang, seperti yang dijelaskan.

Kembalikan nilai bertipe List<String>. Pertahankan kode input/output yang disediakan. Kode tersebut membaca argumen skalar satu per baris; sebuah list dimulai dengan jumlah elemen, lalu diikuti elemen-elemennya, sedangkan map dimulai dengan jumlah entrinya, lalu diikuti setiap key dan value. List bersarang mengulangi format jumlah elemen dan elemen untuk setiap baris. main yang disediakan mencetak nilai yang dikembalikan, lalu satu newline. List menggunakan format bertanda kurung siku standar Kotlin; jangan cetak label tambahan.

Coba sendiri

fun contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
    val contacts = mutableMapOf<String, String>()
    val replies = mutableListOf<String>()
    for (i in commands.indices) {
        val name = names[i]
        when (commands[i]) {
            "PUT" -> {
                contacts[name] = phones[i]
                replies.add("saved")
            }
            "FIND" -> replies.add(contacts[name] ?: "missing")
            "REMOVE" -> {
                if (contacts.containsKey(name)) {
                    contacts.remove(name)
                    replies.add("removed")
                } else replies.add("missing")
            }
            "LIST" -> replies.add(contacts.keys.sorted().toString())
        }
    }
    return replies
}
fun main() {
    val commandsCount = readln().toInt()
    val commands = mutableListOf<String>()
    for (i0 in 0 until commandsCount) {
        val commandsItem = readLine().orEmpty()
        commands.add(commandsItem)
    }
    val namesCount = readln().toInt()
    val names = mutableListOf<String>()
    for (i0 in 0 until namesCount) {
        val namesItem = readLine().orEmpty()
        names.add(namesItem)
    }
    val phonesCount = readln().toInt()
    val phones = mutableListOf<String>()
    for (i0 in 0 until phonesCount) {
        val phonesItem = readLine().orEmpty()
        phones.add(phonesItem)
    }
    println(contactBook(commands, names, phones))
}

Semua pelajaran di Logika & Alur

Latihan sendiri: Playground Kotlin