Menu
Coddy logo textTech

חיתוך רשימה באמצעות SubList

חלק מהיחידה יסודות במסלול ה-Kotlin של Coddy. שיעור 79 מתוך 93.

לפעמים צריך לחלץ חלק מרשימה במקום לעבוד עם האוסף כולו. המתודה subList() מאפשרת ליצור תצוגה של טווח מסוים של איברים מתוך רשימה קיימת.

המתודה subList() מקבלת שני פרמטרים: אינדקס ההתחלה (כולל) ואינדקס הסיום (לא כולל). פירוש הדבר שהאיבר באינדקס ההתחלה נכלל, אבל האיבר באינדקס הסיום לא נכלל:

val numbers = listOf(10, 20, 30, 40, 50)
val slice = numbers.subList(1, 4)
println(slice)  // [20, 30, 40]

בדוגמה הזו, subList(1, 4) מחלץ איברים מאינדקס 1 ועד (אך לא כולל) אינדקס 4. כך מתקבלים האיברים השני, השלישי והרביעי.

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

ברוב המקרים שבהם משתמשים ברשימות לקריאה בלבד, אפשר פשוט להשתמש בו כדי לגשת לטווח של איברים:

val days = listOf("Mon", "Tue", "Wed", "Thu", "Fri")
val midWeek = days.subList(1, 4)
println(midWeek)  // [Tue, Wed, Thu]
challenge icon

אתגר

בינוני

תקבלו רשימה של מספרים שלמים ושני אינדקסים שמייצגים טווח. חלצו תת־רשימה באמצעות subList() והדפיסו את סכום האיברים שחולצו.

פורמט הקלט:

  • שורה ראשונה: מספר שלם n שמייצג את מספר האיברים
  • n השורות הבאות: מספרים שלמים שיש להוסיף לרשימה
  • השורה הבאה: אינדקס ההתחלה (כולל)
  • השורה האחרונה: אינדקס הסיום (לא כולל)

פורמט הפלט:

הדפיסו את סכום האיברים בתת־הרשימה שחולצה.

דוגמה:

אם הרשימה היא [5, 10, 15, 20, 25], אינדקס ההתחלה הוא 1 ואינדקס הסיום הוא 4, תת־הרשימה תהיה [10, 15, 20] והפלט צריך להיות 45.

נסו בעצמכם

fun main() {
    val n = readLine()!!.toInt()
    val list = mutableListOf<Int>()
    
    repeat(n) {
        list.add(readLine()!!.toInt())
    }
    
    val startIndex = readLine()!!.toInt()
    val endIndex = readLine()!!.toInt()
    
    // TODO: כתבו את הקוד שלכם למטה
    // השתמשו ב-subList() כדי לחלץ איברים מ-startIndex עד endIndex
    // חשבו והדפיסו את סכום האיברים שחולצו
    
}
quiz iconבחנו את עצמכם

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

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

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