Menu
Coddy logo textTech

הפרש והפרש סימטרי

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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"]
challenge icon

אתגר

קל

קרא שתי שורות קלט, שכל אחת מהן היא רשימה של מחרוזות המופרדות בפסיקים. התייחס אליהן כאל currentMembers ואל renewedMembers, בהתאמה.

הדפס שלוש שורות, כל אחת ממוינת בסדר אלפביתי ומחוברת באמצעות , (או ריקה כשאין פריטים):

  1. Lapsed: <...> > current פחות renewed
  2. New: <...> > renewed פחות current
  3. Stayed: <...> > החיתוך של שתיהן

עבור הקלט 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) ואלו שנשארו (החיתוך)
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: Swift אונליין