الطرح والفرق المتماثل
جزء من قسم المنطق والتدفق في رحلة 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ورقة مرجعية
تُرجع 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}استخدم المجموعة كمرشح (filter) بـ O(1) باستخدام contains:
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"]جرّب بنفسك
let current = Set(readLine()!.components(separatedBy: ","))
let renewed = Set(readLine()!.components(separatedBy: ","))
// TODO: اطبع Lapsed (current - renewed), New (renewed - current), Stayed (intersection)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات