Menu
Coddy logo textTech

שיוך לפי מפתח

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

associateBy יוצרת מפה ממפתח מחושב לאיבר המקורי. אם מפתחות חוזרים, האיבר האחרון עבור אותו מפתח הוא שיישמר. השתמשו ב-groupBy כשצריך לשמור כל איבר תואם; השתמשו ב-associateBy כשמתכוונים לשמור את האיבר האחרון עבור כל מפתח.

בתוך main:

val latest = listOf("a", "to", "b").associateBy { it.length }
println(latest[1])

גם ל-a וגם ל-b יש את המפתח one, ולכן b מחליף את a עבור המפתח הזה.

הפונקציה associateBy שומרת את האיבר האחרון כאשר מפתחות מחושבים מתנגשים.

challenge icon

אתגר

בינוני

השלם את lastOfLength עם הפרמטרים words: List<String>, length: Int. השתמש ב-associateBy כאשר אורך המילה הוא המפתח. החזר את מילת הקלט האחרונה באורך המבוקש, או missing אם אין כזו.

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

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

נסו בעצמכם

fun lastOfLength(words: List<String>, length: Int): String {
    // כתבו כאן את הפתרון שלכם.
    return ""
}
fun main() {
    val wordsCount = readln().toInt()
    val words = mutableListOf<String>()
    for (i0 in 0 until wordsCount) {
        val wordsItem = readLine().orEmpty()
        words.add(wordsItem)
    }
    val length = readln().toInt()
    println(lastOfLength(words, length))
}
quiz iconבחנו את עצמכם

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

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

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