Menu
Coddy logo textTech

חיתוך רשימה באמצעות 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בחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Kotlin אונליין