Menu
Coddy logo textTech

טרנספורמציה באמצעות Map

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 31 מתוך 63.

פעולת האוסף map מחילה למבדה על כל איבר ומחזירה רשימה חדשה של תוצאות באותו סדר. פעולה זו שונה מסוג האוסף Map: היא משנה ערכים, ואינה יוצרת רשומות מפתח-ערך אלא אם למבדה שלך מחזירה זוגות.

בתוך main:

val lengths = listOf("sun", "rain").map { it.length }
println(lengths)

כל מילה הופכת לאורך שלה, בעוד שהסדר ומספר האיברים נשארים זהים.

‏map מחזירה תוצאה אחת שעברה טרנספורמציה עבור כל איבר בקלט, תוך שמירה על הסדר.

challenge icon

אתגר

בינוני

השלימו את squares עם הפרמטרים values: List<Int>. החזירו את הריבוע של כל ערך, לפי סדר הקלט. הערכים הם בין ‎-1000 ל־1000. השתמשו ב־map.

אלא אם צוין לעיל טווח מצומצם יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים שלמים וערכים שלמים באוספים הם בין ‎-1000 ל־1000. טקסט שסופק לצורך ניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.

החזירו ערך מסוג List<Int>. השאירו את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ואחריו האיברים, ומפה מתחילה במספר הרשומות שלה ואחריו כל מפתח וערך. רשימות מקוננות חוזרות על תבנית מספר האיברים והאיברים עבור כל שורה. ה־main שסופקה מדפיסה את הערך המוחזר ואחריו שורה חדשה אחת. רשימות משתמשות בתבנית הסוגריים המרובעים הסטנדרטית של Kotlin; אל תדפיסו תוויות נוספות.

נסו בעצמכם

fun squares(values: List<Int>): List<Int> {
    // כתבו כאן את הפתרון שלכם.
    return emptyList()
}
fun main() {
    val valuesCount = readln().toInt()
    val values = mutableListOf<Int>()
    for (i0 in 0 until valuesCount) {
        val valuesItem = readln().toInt()
        values.add(valuesItem)
    }
    println(squares(values))
}
quiz iconבחנו את עצמכם

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

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

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