קיבוץ ערכים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 16 מתוך 56.
תבנית האינדקס ברירת המחדל היא הבסיס לשתי צורות יומיומיות.
מונה תדירויות: ספירת מספר הפעמים שכל מפתח מופיע.
let letters = ["a", "b", "a", "c", "a"]
var counts: [String: Int] = [:]
for letter in letters {
counts[letter, default: 0] += 1
}
// counts == ["a": 3, "b": 1, "c": 1]קיבוץ למקטעים: אספו ערכים לפי מפתח נגזר:
let words = ["hi", "hello", "yo", "hey"]
var byLength: [Int: [String]] = [:]
for w in words {
byLength[w.count, default: []].append(w)
}
// [2: ["hi", "yo"], 5: ["hello"], 3: ["hey"]]ברירת המחדל למקרה של קיבוץ היא מערך ריק. הערך default: משמש רק כשהמפתח חסר, ואז הצד הימני משנה את הרשומה במקומה.
אתגר
בינוניקראו שורת קלט אחת: רשימת מילים המופרדת בפסיקים.
הדפיסו, בסדר הזה:
- שורה אחת לכל אורך מילה שמופיע בקלט, מהקצר ביותר לארוך ביותר, בפורמט
<length>: <count>כאשרcountהוא מספר המילים באורך הזה שהופיעו Most common length: <n>כאשרnהוא האורך עם מספר ההופעות הגבוה ביותר. במקרה של תיקו, בחרו באורך הקצר יותר.
עבור הקלט hi,hello,yo,hey,bonjour,bye, הפלט הוא:
2: 2
3: 2
5: 1
7: 1
Most common length: 2(האורכים 2 ו-3 מופיעים שניהם פעמיים. התיקו הוכרע לטובת האורך הקצר יותר, ולכן 2 מנצח.)
נסו בעצמכם
let words = readLine()!.components(separatedBy: ",")
// TODO: ספור מילים לפי אורך; הדפס בסדר ממוין; הדפס את האורך הנפוץ ביותר (במקרה של תיקו: הקצר יותר)
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
5פונקציות מסדר גבוה חלק 1
מיפוי (Map)סינון (Filter)צמצום (Reduce)שרשור map, filter ו-reduceסיכום – סטטיסטיקות מיליםתרגלו בעצמכם: Swift אונליין