Menu
Coddy logo textTech

İç İçe Listeleri Düzleştirme

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

flatten, iç listeleri önce dış satır sırasına, ardından iç öğe sırasına göre tek bir listede birleştirir. İç içe geçmenin bir düzeyini kaldırır; ancak yinelenenleri kaldırmaz veya değerleri sıralamaz.

main içinde:

val rows = listOf(listOf(3, 1), emptyList(), listOf(1, 2))
println(rows.flatten())

Satır sırası korunur; birinin her iki kopyası da buna dahildir.

flatten bir koleksiyon iç içelik düzeyini kaldırır ve öğe sırasını korur.

challenge icon

Görev

Orta

grid: List<List<Int>> parametresiyle flattenRows işlevini tamamlayın. Tüm satır değerlerini satır sırasını koruyarak tek bir liste olarak döndürü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ığı üzere geçersiz veya aralık dışı gösterimler içerebilir.

List<Int> 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 olacak şekilde okur; bir liste, ardından öğeleri gelen sayısıyla başlar ve bir map, 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 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 flattenRows(grid: List<List<Int>>): List<Int> {
    // Çözümünüzü buraya yazın.
    return emptyList()
}
fun main() {
    val gridCount = readln().toInt()
    val grid = mutableListOf<List<Int>>()
    for (i0 in 0 until gridCount) {
        val gridItemCount = readln().toInt()
        val gridItem = mutableListOf<Int>()
        for (i1 in 0 until gridItemCount) {
            val gridItemItem = readln().toInt()
            gridItem.add(gridItemItem)
        }
        grid.add(gridItem)
    }
    println(flattenRows(grid))
}
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