טרנספורמציה באמצעות Map
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 31 מתוך 63.
פעולת האוסף map מחילה למבדה על כל איבר ומחזירה רשימה חדשה של תוצאות באותו סדר. פעולה זו שונה מסוג האוסף Map: היא משנה ערכים, ואינה יוצרת רשומות מפתח-ערך אלא אם למבדה שלך מחזירה זוגות.
בתוך main:
val lengths = listOf("sun", "rain").map { it.length }
println(lengths)כל מילה הופכת לאורך שלה, בעוד שהסדר ומספר האיברים נשארים זהים.
map מחזירה תוצאה אחת שעברה טרנספורמציה עבור כל איבר בקלט, תוך שמירה על הסדר.
אתגר
בינוניהשלימו את 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))
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4אוספים מקוננים
רשימות של רשימותמעבר על שורותסיכומים של שורותהשטחת רשימות מקוננותסיכום – שורות של מקומות ישיבה7צינורות עיבוד של אוספים
טרנספורמציה באמצעות Mapסינון ערכיםבדיקת כללי האוסףצבירה באמצעות Foldסיכום – סכומים מאושרים5פרויקט - ספר טלפונים
שמירת אנשי קשרחיפוש אנשי קשרתרגלו בעצמכם: Kotlin אונליין