קבלת מלאי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 56 מתוך 63.
בנו תוכנית לניהול מלאי שמקבלת מלאי ומוכרת אותו, בודקת כמויות ומפיקה דוחות. כל שלב מרחיב את אותו מעבד פקודות. נתחו את שדות הפקודה, אמתו כמויות לפני שינוי המפה, והחזירו תגובה אחת לכל פקודה. קלט לא תקין חייב להשאיר את המלאי ללא שינוי.
val fields = "ADD|pen|3".split("|")אתגר
קשההשלם את runInventory עם הפרמטרים commands: List<String>. בנה מלאי שמתחיל ריק בכל קריאה לפונקציה. כל פקודה היא מחרוזת אחת עם שדות המופרדים באמצעות |. שמות הפריטים הם מילים באותיות ASCII קטנות. יש לכל היותר 100 פקודות. פצל כל פקודה לפי המפריד המילולי; לפקודות תמיד יש את מספר השדות הנכון עבור הפעולה שלהן. החזר תשובה אחת לכל פקודה. מסירים רווחים מכמויות לפני הניתוח; הכמויות התקינות הן בין 0 ל-1000. טקסט מספרי לא תקין, טקסט מחוץ לטווח של Int, כמויות שליליות או כמויות מעל 1000 מפיקים invalid ללא שינוי במצב. תמוך ב-ADD|item|quantity: הוסף כמות תקינה למלאי של אותו פריט, שמתחיל באפס, והחזר added. הוספת אפס עדיין יוצרת את הפריט. הקלט משתמש רק בפעולות הנתמכות בשלב זה.
אלא אם צוין לעיל טווח מחמיר יותר, האוספים מכילים לכל היותר 100 איברים בכל רמה, והארגומנטים השלמים והערכים השלמים באוספים הם בין -1000 ל-1000. הטקסט שסופק לניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כפי שתואר.
החזר ערך מסוג List<String>. השאר את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ואחריו האיברים, ומפה מתחילה במספר הרשומות שלה ואחריו כל מפתח וערך. רשימות מקוננות חוזרות על התבנית של מספר איברים ואחריו איברים עבור כל שורה. ה-main שסופקה מדפיסה את הערך המוחזר ואחריו שורה חדשה אחת. רשימות משתמשות בתבנית הרגילה של Kotlin עם סוגריים מרובעים; אל תדפיס תוויות נוספות.
נסו בעצמכם
fun runInventory(commands: 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)
}
println(runInventory(commands))
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4אוספים מקוננים
רשימות של רשימותמעבר על שורותסיכומים של שורותהשטחת רשימות מקוננותסיכום – שורות של מקומות ישיבה7צינורות עיבוד של אוספים
טרנספורמציה באמצעות Mapסינון ערכיםבדיקת כללי האוסףצבירה באמצעות Foldסיכום – סכומים מאושרים5פרויקט - ספר טלפונים
שמירת אנשי קשרחיפוש אנשי קשרתרגלו בעצמכם: Kotlin אונליין