שמירת אנשי קשר
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 21 מתוך 63.
בנה ספר אנשי קשר ששומר אנשי קשר, מוצא ומסיר אותם, ואז מציג שמות ומדווח נתונים סטטיסטיים. מפה שניתנת לשינוי שומרת מספר טלפון אחד לכל שם. פקודות בקריאה אחת חולקות את אותה מפה; כל קריאה חדשה מתחילה מחדש. קוד הקלט שסופק קורא שלוש רשימות שוות באורכן. ממש את לולאת הפקודות בתוך contactBook.
val contacts = mutableMapOf<String, String>()אתגר
קשההשלימו את contactBook עם הפרמטרים commands: List<String>, names: List<String>, phones: List<String>. בנו ספר אנשי קשר בזיכרון שמתחיל ריק בכל קריאה לפונקציה. לשלוש הרשימות אורך שווה, לכל היותר 100. בכל אינדקס, commands בוחר פעולה; names ו-phones מספקות את הארגומנטים שלה. השמות הם מילים לא ריקות באותיות ASCII קטנות; מספרי הטלפון הם מחרוזות לא ריקות של ספרות, ויש לשמור אותם כמחרוזות כדי לשמר אפסים מובילים. כל פקודה מפיקה תשובה אחת ברשימה המוחזרת. תמכו ב-PUT: שמרו או החליפו את מספר הטלפון של השם שסופק, ואז השיבו saved. הקלטים מכילים רק פקודות הנתמכות בשלב זה. מחרוזות ארגומנטים שמתעלמים מהן יכולות להיות כל טקסט לא ריק.
אלא אם צוין לעיל טווח מחמיר יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים של מספרים שלמים וערכי מספרים שלמים באוספים הם בין -1000 ל-1000. טקסט שמסופק לניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.
החזירו ערך מסוג List<String>. השאירו את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ואחריו האיברים, ומפה מתחילה במספר הערכים שלה ואחריו כל מפתח וערך. רשימות מקוננות חוזרות על הפורמט של מספר איברים ואחריו איברים עבור כל שורה. ה-main שסופקה מדפיסה את הערך המוחזר ואחריו תו שורה חדשה אחד. רשימות משתמשות בפורמט הסטנדרטי של Kotlin עם סוגריים מרובעים; אל תדפיסו תוויות נוספות.
נסו בעצמכם
fun contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
// כתבו כאן את הפתרון שלכם.
return emptyList()
}
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))
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4אוספים מקוננים
רשימות של רשימותמעבר על שורותסיכומים של שורותהשטחת רשימות מקוננותסיכום – שורות של מקומות ישיבה7צינורות עיבוד של אוספים
טרנספורמציה באמצעות Mapסינון ערכיםבדיקת כללי האוסףצבירה באמצעות Foldסיכום – סכומים מאושרים5פרויקט - ספר טלפונים
שמירת אנשי קשרחיפוש אנשי קשרתרגלו בעצמכם: Kotlin אונליין