השטחת רשימות מקוננות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 19 מתוך 63.
flatten משרשרת את הרשימות הפנימיות לרשימה אחת, לפי סדר השורות החיצוניות ולאחר מכן לפי סדר האיברים הפנימיים. היא מסירה רמת קינון אחת, אך אינה מסירה כפילויות או ממיינת את הערכים.
בתוך main:
val rows = listOf(listOf(3, 1), emptyList(), listOf(1, 2))
println(rows.flatten())flatten מסירה רמת קינון אחת של אוסף ושומרת על סדר האיברים.
אתגר
בינוניהשלימו את flattenRows באמצעות הפרמטרים grid: List<List<Int>>. החזירו את כל ערכי השורות כרשימה אחת, לפי סדר השורות.
אלא אם צוין לעיל טווח מצומצם יותר, האוספים מכילים לכל היותר 100 איברים בכל רמה, והארגומנטים מסוג מספר שלם וערכי האוספים מסוג מספר שלם הם בטווח שבין -1000 ל־1000. הטקסט המסופק לניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.
החזירו ערך מסוג List<Int>. השאירו את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ואחריו איבריה, ומפה מתחילה במספר הרשומות שלה ואחריו כל מפתח וערך. רשימות מקוננות חוזרות על תבנית מספר האיברים והאיברים עבור כל שורה. ה־main שסופקה מדפיסה את ערך ההחזרה ואחריו שורה חדשה אחת. רשימות משתמשות בתבנית הסוגריים המרובעים הסטנדרטית של Kotlin; אל תדפיסו תוויות נוספות.
נסו בעצמכם
fun flattenRows(grid: List<List<Int>>): List<Int> {
// כתבו כאן את הפתרון שלכם.
return emptyList()
}
fun main() {
val gridCount = readln().toInt()
val grid = mutableListOf<List<Int>>()
for (i0 in 0 until gridCount) {
val gridItemCount = readln().toInt()
val gridItem = mutableListOf<Int>()
for (i1 in 0 until gridItemCount) {
val gridItemItem = readln().toInt()
gridItem.add(gridItemItem)
}
grid.add(gridItem)
}
println(flattenRows(grid))
}השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4אוספים מקוננים
רשימות של רשימותמעבר על שורותסיכומים של שורותהשטחת רשימות מקוננותסיכום – שורות של מקומות ישיבה7צינורות עיבוד של אוספים
טרנספורמציה באמצעות Mapסינון ערכיםבדיקת כללי האוסףצבירה באמצעות Foldסיכום – סכומים מאושרים5פרויקט - ספר טלפונים
שמירת אנשי קשרחיפוש אנשי קשרתרגלו בעצמכם: Kotlin אונליין