Menu
Coddy logo textTech

Kişi Adlarını Listeleme

Coddy'nin Kotlin Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 24 / 63.

challenge icon

Görev

Zor

contactBook işlevini commands: List<String>, names: List<String>, phones: List<String> parametreleriyle tamamla. Her işlev çağrısı için boş başlayan, bellekte tutulan bir kişi rehberi oluştur. Üç listenin uzunluğu eşittir ve en fazla 100'dür. Her dizin konumunda commands bir işlemi seçer; names ve phones işlemin bağımsız değişkenlerini sağlar. İsimler boş olmayan, küçük harfli ASCII sözcüklerdir; telefonlar boş olmayan rakam dizeleridir ve baştaki sıfırları korumak için dize olarak kalmalıdır. Her komut, döndürülen listede bir yanıt üretir. Daha önceki adımlarda yazdığın her şeyi, önceki tüm komutlar ve yanıtlar da dahil olmak üzere koru. PUT desteği ekle: sağlanan isim için telefon numarasını kaydet veya değiştir, ardından saved yanıtını ver. FIND ekle: sağlanan isim için kayıtlı telefonu, yoksa missing yanıtını ver. Telefon bağımsız değişkeni yok sayılır. REMOVE ekle: sağlanan ismi kaldır ve isim mevcutsa removed, aksi takdirde missing yanıtını ver. Telefon bağımsız değişkeni yok sayılır. LIST ekle: kaydedilmiş isimlerin Kotlin'in standart köşeli parantezli biçimindeki sıralanmış listesini (örneğin [ada, bo]) veya liste boşsa [] yanıtını ver. Her iki bağımsız değişken değeri de yok sayılır. Bu tek yanıt dizesini oluşturmak için contacts.keys.sorted().toString() kullan. Girdiler yalnızca bu adımda desteklenen komutları içerir. Yok sayılan bağımsız değişken dizeleri boş olmayan herhangi bir metin olabilir.

Yukarıda daha sıkı sınırlar belirtilmedikçe, koleksiyonlar her düzeyde en fazla 100 öğe içerir ve tamsayı bağımsız değişkenler ile tamsayı koleksiyon değerleri -1000 ile 1000 arasındadır. Ayrıştırma için sağlanan metin, açıklandığı şekilde geçersiz veya aralık dışı gösterimler içerebilir.

List<String> türünde bir değer döndür. Sağlanan girdi/çıktı kodunu koru. Bu kod, skaler bağımsız değişkenleri her satırda bir tane okur; bir liste, sayısıyla ve ardından öğeleriyle başlar; bir eşlem ise giriş sayısıyla ve ardından her anahtar ve değerle başlar. İç içe listeler, her satır için sayı ve öğeler biçimini tekrarlar. Sağlanan main, dönüş değerini ve ardından bir yeni satırı yazdırır. Listeler Kotlin'in standart köşeli parantezli biçimini kullanır; ek etiket yazdırma.

Kendin dene

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")
            }
        }
    }
    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))
}

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Kotlin playground