Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

تقسيم القوائم باستخدام Take وDrop

جزء من قسم الأساسيات في رحلة Kotlin على Coddy. الدرس 80 من 93.

توفر Kotlin طريقتين أبسط لاستخراج أجزاء من قائمة عندما تحتاج فقط إلى عناصر من البداية أو النهاية: take() وdrop().

تُرجع الطريقة take() قائمة جديدة تحتوي على أول n عناصر:

val numbers = listOf(10, 20, 30, 40, 50)
val firstThree = numbers.take(3)
println(firstThree)  // [10, 20, 30]

تُجري الطريقة drop() العملية العكسية. فهي تتخطّى العناصر n الأولى وتُعيد العناصر المتبقية:

val numbers = listOf(10, 20, 30, 40, 50)
val afterTwo = numbers.drop(2)
println(afterTwo)  // [30, 40, 50]

على عكس subList()، تُرجع هذه الأساليب نسخًا مستقلة بدلًا من العروض. كما أنها أكثر وضوحًا عندما تريد ببساطة الحصول على «العناصر القليلة الأولى» أو «كل شيء باستثناء العناصر القليلة الأولى».

يمكنك دمج الطريقتين لاستخراج قسم متوسط:

val letters = listOf("A", "B", "C", "D", "E")
val middle = letters.drop(1).take(3)
println(middle)  // [B, C, D]

إذا طلبت عناصر أكثر من الموجودة، فستُرجع هذه الأساليب ببساطة ما هو متاح دون طرح خطأ:

val short = listOf(1, 2)
println(short.take(10))  // [1, 2]
println(short.drop(10))  // []
challenge icon

التحدي

متوسط

ستتلقى قائمة من الأعداد الصحيحة ورقمين: عدد العناصر التي يجب حذفها من البداية، وعدد العناصر التي يجب أخذها بعد الحذف.

استخدم drop() وtake() معًا لاستخراج قسم متوسط من القائمة، ثم اطبع العناصر المستخرجة.

تنسيق الإدخال:

  • السطر الأول: عدد صحيح n يمثل عدد العناصر
  • الأسطر n التالية: أعداد صحيحة لإضافتها إلى القائمة
  • السطر التالي: عدد العناصر التي يجب حذفها من البداية
  • السطر الأخير: عدد العناصر التي يجب أخذها بعد الحذف

تنسيق الإخراج:

اطبع القائمة الناتجة بالتنسيق الافتراضي لقوائم Kotlin.

مثال:

إذا كانت القائمة هي [10, 20, 30, 40, 50, 60]، وكان عدد العناصر المحذوفة هو 2، وعدد العناصر المأخوذة هو 3، فيجب أن يكون الناتج:

[30, 40, 50]

جرّب بنفسك

fun main() {
    // اقرأ عدد العناصر
    val n = readLine()!!.toInt()
    
    // اقرأ عناصر القائمة
    val list = mutableListOf<Int>()
    for (i in 1..n) {
        list.add(readLine()!!.toInt())
    }
    
    // اقرأ قيم drop و take
    val dropCount = readLine()!!.toInt()
    val takeCount = readLine()!!.toInt()
    
    // TODO: اكتب الكود الخاص بك أدناه
    // استخدم drop() و take() لاستخراج القسم الأوسط
    
    
    // اطبع النتيجة
    println(result)
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات

تدرّب بنفسك: Playground لـ Kotlin