סינון ערכים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 32 מתוך 63.
filter משאירה את האיברים שעבורם פונקציית למבדה של תנאי מחזירה true. היא שומרת על הסדר שלהם ועשויה להחזיר פחות איברים או אף אחד. שרשור filter לפני map משנה רק את הערכים שנשמרים.
בתוך main:
println(listOf(-2, 0, 3, 4).filter { it > 0 }.map { it * 2 })רק שלוש וארבע עוברות את התנאי; הערכים האלה מוכפלים לאחר מכן.
filter קובע חברות באמצעות תנאי Boolean ושומר על הסדר של הפריטים שנשמרו.
אתגר
בינוניהשלימו את positiveValues עם הפרמטרים values: List<Int>. החזירו רק ערכים חיוביים ממש, תוך שמירה על סדר הקלט שלהם. השתמשו ב־filter.
אלא אם צוינו למעלה גבולות מחמירים יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים שלמים וערכים שלמים באוספים נמצאים בטווח שבין -1000 ל־1000. הטקסט שסופק לניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.
החזירו ערך מסוג List<Int>. השאירו את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ולאחריו האיברים, ומפה מתחילה במספר הרשומות שלה ולאחריו כל מפתח וערך. רשימות מקוננות חוזרות על תבנית מספר האיברים והאיברים עבור כל שורה. ה־main שסופקה מדפיסה את הערך המוחזר ולאחריו תו שורה חדשה אחד. רשימות משתמשות בתבנית הרגילה של Kotlin עם סוגריים מרובעים; אל תדפיסו תוויות נוספות.
נסו בעצמכם
fun positiveValues(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(positiveValues(values))
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4אוספים מקוננים
רשימות של רשימותמעבר על שורותסיכומים של שורותהשטחת רשימות מקוננותסיכום – שורות של מקומות ישיבה7צינורות עיבוד של אוספים
טרנספורמציה באמצעות Mapסינון ערכיםבדיקת כללי האוסףצבירה באמצעות Foldסיכום – סכומים מאושרים5פרויקט - ספר טלפונים
שמירת אנשי קשרחיפוש אנשי קשרתרגלו בעצמכם: Kotlin אונליין