הפרש והפרש סימטרי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 20 מתוך 56.
שתי פעולות נוספות על קבוצות משלימות את ערכת הכלים.
subtracting מחזירה את האיברים בקבוצה הראשונה שאינם נמצאים בקבוצה השנייה:
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5]
a.subtracting(b) // {1, 2}symmetricDifference מחזירה את האיברים שנמצאים בדיוק באחת משתי הקבוצות, ולעולם לא בשתיהן:
a.symmetricDifference(b) // {1, 2, 5}יחד עם union ו־intersection, ארבע הפעולות האלה מכסות כל שאלה באלגברת קבוצות שתיתקלו בה ביום־יום.
שייכות לקבוצה שימושית גם כמסנן: בדקו אם ערך נמצא בקבוצה בזמן O(1):
let stopwords: Set = ["the", "a", "an"]
let words = ["the", "cat", "sat", "on", "a", "mat"]
let real = words.filter { !stopwords.contains($0) }
// ["cat", "sat", "on", "mat"]אתגר
קלקרא שתי שורות קלט, שכל אחת מהן היא רשימה של מחרוזות המופרדות בפסיקים. התייחס אליהן כאל currentMembers ואל renewedMembers, בהתאמה.
הדפס שלוש שורות, כל אחת ממוינת בסדר אלפביתי ומחוברת באמצעות , (או ריקה כשאין פריטים):
Lapsed: <...>> current פחות renewedNew: <...>> renewed פחות currentStayed: <...>> החיתוך של שתיהן
עבור הקלט alice,bob,cara בשורה 1 ו-bob,cara,dan בשורה 2, הפלט הוא:
Lapsed: alice
New: dan
Stayed: bob,caraנסו בעצמכם
let current = Set(readLine()!.components(separatedBy: ","))
let renewed = Set(readLine()!.components(separatedBy: ","))
// TODO: הדפס את אלו שפגו (current - renewed), החדשים (renewed - current) ואלו שנשארו (החיתוך)
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
תרגלו בעצמכם: Swift אונליין