Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

الطرح والفرق المتماثل

جزء من قسم المنطق والتدفق في رحلة 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: اطبع Lapsed (current - renewed), New (renewed - current), Stayed (intersection)
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس المنطق والتدفق

تدرّب بنفسك: Playground لـ Swift