Menu
Coddy logo textTech

Karşılaştırmaları Birleştirme

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

Bir karşılaştırıcı sağlamak için sortedWith kullanın. compareBy<String> { it.length } sözcük uzunluklarını karşılaştırır; uzunluklar eşit olduğunda .thenBy { it } zinciri sözcüğün kendisini karşılaştırır. Daha sonraki karşılaştırma anahtarları yalnızca önceki tüm anahtarlar eşit olduğunda kullanılır.

main içinde:

val order = compareBy<String> { it.length }.thenBy { it }
println(listOf("bb", "a", "aa").sortedWith(order))

Uzunluk, a öğesini önce getirir; alfabetik karşılaştırma iki karakterli eşitliği bozar.

thenBy, önceki karşılaştırma anahtarını değiştirmeden eşitlikleri bozar.

challenge icon

Görev

Orta

wordOrder işlevini words: List<String> parametresiyle tamamlayın. Küçük harfli ASCII sözcükleri önce uzunluklarına göre artan sırada, eşitlik durumunda ise alfabetik olarak sıralayın.

Yukarıda daha katı sınırlar belirtilmediği sürece 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ığı 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, sayısının ardından öğeleriyle başlar ve bir eşleme, giriş sayısının ardından her anahtar ve değer çiftiyle başlar. İç içe listeler, her satır için sayı ve öğeler biçimini tekrarlar. Sağlanan main, döndürülen değeri 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 wordOrder(words: List<String>): List<String> {
    // Çözümünüzü buraya yazın.
    return emptyList()
}
fun main() {
    val wordsCount = readln().toInt()
    val words = mutableListOf<String>()
    for (i0 in 0 until wordsCount) {
        val wordsItem = readLine().orEmpty()
        words.add(wordsItem)
    }
    println(wordOrder(words))
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

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

Kendi başına pratik yap: Kotlin playground