Menu
Coddy logo textTech

Kişileri Silme

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

challenge icon

Görev

Zor

contactBook işlevini commands: List<String>, names: List<String>, phones: List<String> parametreleriyle tamamlayın. Her işlev çağrısı için boş başlayan, bellekte tutulan bir kişi defteri oluşturun. Üç listenin uzunlukları eşittir ve en fazla 100 olabilir. Her dizin konumunda commands bir işlemi seçer; names ve phones bu işlemin bağımsız değişkenlerini sağlar. İsimler boş olmayan küçük 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. Önceki adımlarda yazdığınız her şeyi, önceki tüm komutlar ve yanıtlar dahil olmak üzere koruyun. PUT işleğini destekleyin: sağlanan isim için telefon numarasını kaydedin veya değiştirin, ardından saved yanıtını verin. FIND işlemini ekleyin: sağlanan isim için kayıtlı telefonu, yoksa missing yanıtını verin. Telefon bağımsız değişkeni yok sayılır. REMOVE işlemini ekleyin: sağlanan ismi kaldırın; isim mevcutsa removed, aksi takdirde missing yanıtını verin. Telefon bağımsız değişkeni yok sayılır. 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şkenleri ile tamsayı koleksiyon değerleri -1000 ile 1000 arasındadır. Ayrıştırma için sağlanan metin, açıklandığı üzere geçersiz veya aralık dışı gösterimler içerebilir.

List<String> türünde bir değer döndürün. Sağlanan girdi/çıktı kodunu koruyun. Bu kod, skaler bağımsız değişkenleri satır başına bir tane okuyup; bir listeyi önce sayısı, ardından öğeleri gelecek şekilde ve bir eşlemeyi önce giriş sayısı, ardından her anahtar ve değer gelecek şekilde okur. İç içe listelerde her satır için sayı ve öğe biçimi tekrarlanır. Sağlanan main, döndürülen değeri ve ardından bir satır sonunu yazdırır. Listeler Kotlin'in standart köşeli parantezli biçimini kullanır; ek etiket yazdırmayın.

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