צבירה באמצעות Fold
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 34 מתוך 63.
fold מתחילה בצובר התחלתי מפורש ומעבדת את האיברים לפי הסדר. הלמבדה שלה מקבלת את הצובר ואת האיבר הבא, ומחזירה את הצובר הבא. הערך ההתחלתי הוא גם התוצאה עבור קלט ריק.
בתוך main:
println(listOf(2, 3, 4).fold(1) { product, value -> product * value })המצבר מתחיל באחד והופך לשניים, לשש ולעשרים וארבע.
fold משתמש בצובר ההתחלתי שלו כתוצאה עבור קלט ריק.
אתגר
בינוניהשלם את sumWithFold באמצעות הפרמטר values: List<Int>. השתמש ב־fold עם ערך התחלתי אפס כדי להחזיר את סכום הערכים.
אלא אם צוין לעיל טווח מחמיר יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים שלמים וערכים שלמים באוספים הם בטווח שבין -1000 ל־1000. הטקסט שסופק לניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.
החזר ערך מסוג Int. השאר את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ואחריו האיברים, ומפה מתחילה במספר הרשומות שלה ואחריו כל מפתח וערך. רשימות מקוננות חוזרות על תבנית מספר האיברים והאיברים עבור כל שורה. הפונקציה main שסופקה מדפיסה את ערך ההחזרה ואחריו תו שורה חדשה. רשימות משתמשות בתבנית הסטנדרטית של Kotlin עם סוגריים מרובעים; אל תדפיס תוויות נוספות.
נסו בעצמכם
fun sumWithFold(values: List<Int>): Int {
// כתבו את הפתרון שלכם כאן.
return 0
}
fun main() {
val valuesCount = readln().toInt()
val values = mutableListOf<Int>()
for (i0 in 0 until valuesCount) {
val valuesItem = readln().toInt()
values.add(valuesItem)
}
println(sumWithFold(values))
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4אוספים מקוננים
רשימות של רשימותמעבר על שורותסיכומים של שורותהשטחת רשימות מקוננותסיכום – שורות של מקומות ישיבה7צינורות עיבוד של אוספים
טרנספורמציה באמצעות Mapסינון ערכיםבדיקת כללי האוסףצבירה באמצעות Foldסיכום – סכומים מאושרים5פרויקט - ספר טלפונים
שמירת אנשי קשרחיפוש אנשי קשרתרגלו בעצמכם: Kotlin אונליין