Menu
Coddy logo textTech

חיפוש אנשי קשר

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

challenge icon

אתגר

קשה

השלימו את contactBook עם הפרמטרים commands: List<String>, names: List<String>, phones: List<String>. בנו פנקס אנשי קשר בזיכרון, שמתחיל ריק בכל קריאה לפונקציה. לשלוש הרשימות אורך שווה, לכל היותר 100. בכל אינדקס, commands בוחר פעולה; names ו-phones מספקות את הארגומנטים שלה. השמות הם מילים לא ריקות באותיות ASCII קטנות; מספרי הטלפון הם מחרוזות לא ריקות של ספרות, ויש לשמור אותם כמחרוזות כדי לשמר אפסים מובילים. כל פקודה מייצרת תשובה אחת ברשימה המוחזרת. השאירו את כל מה שכתבתם בשלבים הקודמים, כולל כל הפקודות והתשובות הקודמות. תמכו ב-PUT: שמרו או החליפו את מספר הטלפון של השם שסופק, ואז השיבו saved. הוסיפו את FIND: השיבו את מספר הטלפון השמור עבור השם שסופק, או missing. ארגומנט מספר הטלפון שלה מתעלמים. הקלטים מכילים רק פקודות הנתמכות בשלב הזה. מחרוזות של ארגומנטים שמתעלמים מהם יכולות להיות כל טקסט לא ריק.

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

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

נסו בעצמכם

fun contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
    val contacts = mutableMapOf<String, String>()
    val replies = mutableListOf<String>()
    for (i in commands.indices) {
        val name = names[i]
        when (commands[i]) {
            "PUT" -> {
                contacts[name] = phones[i]
                replies.add("saved")
            }
        }
    }
    return replies
}
fun main() {
    val commandsCount = readln().toInt()
    val commands = mutableListOf<String>()
    for (i0 in 0 until commandsCount) {
        val commandsItem = readLine().orEmpty()
        commands.add(commandsItem)
    }
    val namesCount = readln().toInt()
    val names = mutableListOf<String>()
    for (i0 in 0 until namesCount) {
        val namesItem = readLine().orEmpty()
        names.add(namesItem)
    }
    val phonesCount = readln().toInt()
    val phones = mutableListOf<String>()
    for (i0 in 0 until phonesCount) {
        val phonesItem = readLine().orEmpty()
        phones.add(phonesItem)
    }
    println(contactBook(commands, names, phones))
}

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

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