סיכום – מונה מילים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Rust של Coddy. שיעור 34 מתוך 66.
אתגר
קלתקבל משפט כקלט. ספור כמה פעמים כל מילה מופיעה במשפט ושמור את הספירות במפת גיבוב. לאחר מכן הדפס כל מילה ייחודית יחד עם מספר הפעמים שהיא מופיעה.
דרישות:
- ייבא את
HashMapמתוךstd::collections - צור מפת גיבוב משתנה עם הטיפוסים
HashMap<String, i32> - קרא את משפט הקלט כשורה אחת
- פצל את המשפט למילים נפרדות באמצעות
.split_whitespace() - עבור כל מילה, השתמש ב-
.entry()עם.or_insert(0)כדי לאתחל את הספירה ל-0אם המילה אינה קיימת - לאחר השימוש ב-
.or_insert(0), הגדל את הספירה של אותה מילה ב-1 - לאחר עיבוד כל המילים, עבור על מפת הגיבוב והדפס כל מילה יחד עם מספר הפעמים שהיא מופיעה בפורמט:
[word]: [count]
קלט:
- שורה אחת המכילה משפט עם מילים המופרדות ברווחים (לדוגמה,
hello world hello rust world hello)
פלט:
- שורה אחת עבור כל מילה ייחודית בפורמט:
[word]: [count] - סדר שורות הפלט עשוי להשתנות בין הרצות בדיקה
נסו בעצמכם
use std::collections::HashMap;
use std::io;
fn main() {
// קראו את משפט הקלט
let mut sentence = String::new();
io::stdin().read_line(&mut sentence).expect("Failed to read line");
let sentence = sentence.trim();
// צרו מפת גיבוב ניתנת לשינוי לאחסון מספר ההופעות של כל מילה
let mut word_count: HashMap<String, i32> = HashMap::new();
// TODO: כתבו את הקוד שלכם למטה
// פצלו את המשפט למילים וספרו את ההופעות של כל מילה
// הדפיסו כל מילה עם מספר ההופעות שלה
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1זרימת בקרה מתקדמת
ביטוי 'match'התאמה למספר ערכיםהתאמה לטווחיםביטוי 'if let'לולאות כביטוייםסיכום – מנתח פקודות פשוט4קיבוץ נתונים באמצעות מבנים
מהו מבנה?סקירה כללית על מבניםגישה לשדות במבנהמבנים הניתנים לשינוימבנים כפרמטרים של פונקציהמבני טופלסיכום – יצירת מבנה ספר7טיפול בשגיאות באמצעות 'Result'
מהו 'Result'?שימוש ב-'match' עם 'Result'is_ok() ו-is_err()קיצורי דרך: unwrap ו-expectאופרטור סימן השאלה '?'המרת מחרוזות למספריםסיכום - פונקציית חילוק בטוחה10Closures ופונקציות אנונימיות
מהו Closure?הגדרת Closure פשוטClosures עם פרמטריםלכידת הסביבהסיכום – Closure פשוט לחיבור2מבוא לווקטורים
מהו וקטור?יצירת וקטורהוספת איברים באמצעות pushגישה לאיברי וקטורמעבר על וקטורמעבר ניתן לשינויהסרת איבריםסיכום – מעקב בסיסי אחר ניקוד5זוגות מפתח-ערך באמצעות מפות גיבוב
מהי מפת גיבוב?יצירת מפת גיבובהוספת זוגות מפתח-ערךגישה לערכיםמעבר על מפת גיבובעדכון ערךהסרת זוגסיכום – מונה מיליםתרגלו בעצמכם: קומפיילר Rust אונליין