אתגר - ניתוח מילים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Kotlin של Coddy. שיעור 61 מתוך 63.
אתגר
מומחההשלימו את wordAnalytics עם הפרמטרים lines: List<String>. חלצו מכל שורה את כל רצפי אותיות ה-ASCII הרציפים באמצעות [A-Za-z]+, הפכו אותם לאותיות קטנות וספרו את מספר ההופעות. החזירו פריטים בפורמט word=count לפי תדירות יורדת, ובמקרה של שוויון — לפי סדר אלפביתי. ספרות וסימני פיסוק מפרידים בין מילים.
אלא אם צוין לעיל טווח מחמיר יותר, אוספים מכילים לכל היותר 100 איברים בכל רמה, וארגומנטים של מספרים שלמים וערכים של מספרים שלמים באוספים הם בין -1000 ל-1000. הטקסט שסופק לניתוח עשוי לכלול ייצוגים לא תקינים או מחוץ לטווח, כמתואר.
החזירו ערך מהטיפוס List<String>. השאירו את קוד הקלט/פלט שסופק. הוא קורא ארגומנטים סקלריים, אחד בכל שורה; רשימה מתחילה במספר האיברים שלה ואחריו האיברים, ומפה מתחילה במספר הרשומות שלה ואחריו כל מפתח וערך. רשימות מקוננות חוזרות על התבנית של מספר איברים ואחריו האיברים עבור כל שורה. ה-main שסופקה מדפיסה את הערך המוחזר ואחריו תו newline אחד. רשימות משתמשות בפורמט הרגיל של Kotlin עם סוגריים מרובעים; אל תדפיסו תוויות נוספות.
נסו בעצמכם
fun wordAnalytics(lines: List<String>): List<String> {
// כתבו כאן את הפתרון שלכם.
return emptyList()
}
fun main() {
val linesCount = readln().toInt()
val lines = mutableListOf<String>()
for (i0 in 0 until linesCount) {
val linesItem = readLine().orEmpty()
lines.add(linesItem)
}
println(wordAnalytics(lines))
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
4אוספים מקוננים
רשימות של רשימותמעבר על שורותסיכומים של שורותהשטחת רשימות מקוננותסיכום – שורות של מקומות ישיבה7צינורות עיבוד של אוספים
טרנספורמציה באמצעות Mapסינון ערכיםבדיקת כללי האוסףצבירה באמצעות Foldסיכום – סכומים מאושרים5פרויקט - ספר טלפונים
שמירת אנשי קשרחיפוש אנשי קשרתרגלו בעצמכם: Kotlin אונליין