Kişi İstatistikleri
Coddy'nin Kotlin Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 25 / 63.
Görev
Zorcommands: List<String>, names: List<String>, phones: List<String> parametrelerine sahip contactBook işlevini tamamlayın. Her işlev çağrısında boş başlayan, bellekte tutulan bir kişi defteri oluşturun. Üç listenin uzunlukları eşittir ve en fazla 100 olabilir. Her dizinde commands bir işlemi seçer; names ve phones ise bu işlemin bağımsız değişkenlerini sağlar. İsimler boş olmayan, küçük harflerden oluşan 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: verilen isim için telefon numarasını kaydedin veya değiştirin, ardından saved yanıtını verin. FIND işlemini ekleyin: verilen isim için kayıtlı telefon numarasıyla veya yoksa missing ile yanıt verin. Telefon bağımsız değişkeni yok sayılır. REMOVE işlemini ekleyin: verilen ismi kaldırın ve isim mevcutsa removed, aksi takdirde missing yanıtını verin. Telefon bağımsız değişkeni yok sayılır. LIST işlemini ekleyin: kaydedilmiş isimlerin Kotlin'in standart köşeli parantezli biçimindeki sıralanmış listesiyle, örneğin [ada, bo] ile veya liste boşken [] ile yanıt verin. 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ın. COUNT işlemini ekleyin: contacts=N;phones=P ile yanıt verin; burada N kaydedilmiş isimlerin sayısı, P ise farklı kayıtlı telefon dizelerinin sayısıdır. Her iki bağımsız değişken de yok sayılır. İki isim aynı telefonu paylaşabilir. 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 katı 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ığı gibi 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 okur; bir liste, ardından öğeleri gelen sayısıyla başlar ve bir eşlem, ardından her anahtar ve değer gelen giriş sayısıyla 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ı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")
"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))
}Mantık ve Akış bölümündeki tüm dersler
1Map'ler Bölüm 1
Map'ler OluşturmaGüvenli Map AramalarıMap'leri GüncellemeAnahtarları Kontrol EtmeTekrar - Stok Masası4İç İçe Koleksiyonlar
Liste ListeleriSatırlarda GezinmeSatır Özetleriİç İçe Listeleri DüzleştirmeTekrar - Oturma Sıraları7Koleksiyon İşlem Hatları
Map ile DönüştürmeDeğerleri FiltrelemeKoleksiyon Kurallarını Test EtmeFold ile BiriktirmeTekrar - Onaylanan Toplamlar2Map'ler Bölüm 2
Map Girdileri Üzerinde YinelemeAnahtarlar ve DeğerlerFrekans Map'leriİç İçe Map'lerTekrar - Frekans Raporu5Proje - Kişi Defteri
Kişileri KaydetmeKişileri Bulma3Kümeler ve Üyelik
Kümeler OluşturmaKümeleri GüncellemeKüme İşlemleriAlt Küme KontrolleriÖzet - Etkinlik Konukları6Fonksiyon Değerleri
Lambda YazmaFonksiyon TürleriFonksiyonları GeçirmeYakalanan DeğişkenlerÖzet - Yapılandırılabilir PuanKendi başına pratik yap: Kotlin playground