الاتحاد والتقاطع
جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 19 من 56.
تتميز المجموعات (Sets) عند طرح أسئلة تتعلق بالانتماء (membership) بين مجموعتين.
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5, 6]union تُعيد كل عنصر من كلا الجانبين:
a.union(b) // {1, 2, 3, 4, 5, 6}intersection تعيد فقط العناصر التي تظهر في كليهما:
a.intersection(b) // {3, 4}تُرجع كل طريقة Set جديدة. تظل المجموعات الأصلية كما هي دون تغيير. ترتيب التكرار عبر النتيجة غير مضمون، لذا قم بالفرز قبل الطباعة.
التحدي
سهلاقرأ سطرين من المدخلات. كل منهما عبارة عن قائمة من الأعداد الصحيحة المفصولة بفاصلة.
عاملهما كمجموعتين a و b. اطبع سطرين:
- التقاطع، مرتباً تصاعدياً، وموصولاً بـ
,(أو سطر فارغ عندما يكون فارغاً) - الاتحاد، مرتباً تصاعدياً، وموصولاً بـ
,
بالنسبة للمدخلات 1,2,3,4 في السطر الأول و 3,4,5,6 في السطر الثاني، يكون المخرج:
3,4
1,2,3,4,5,6ورقة مرجعية
عمليات المجموعات في Swift:
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5, 6]
a.union(b) // {1, 2, 3, 4, 5, 6} - العناصر من أي من المجموعتين
a.intersection(b) // {3, 4} - العناصر الموجودة في كلتا المجموعتينكلتا الطريقتين تعيدان Set جديدة؛ المجموعات الأصلية تبقى دون تغيير. قم بالفرز قبل الطباعة لأن ترتيب التكرار غير مضمون.
جرّب بنفسك
let a = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })
let b = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })
// TODO: التقاطع مرتب ومدمج، الاتحاد مرتب ومدمج
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتدفق
1النصوص بعمق
العد والفهارسحالة الأحرف وإزالة الفراغاتالبحث في النصوصتقسيم ودمج النصوصاستبدال النصوص الفرعيةمراجعة - التحقق من اسم المستخدم4المجموعات
إنشاء المجموعاتالاتحاد والتقاطعالطرح والفرق المتماثلالمجموعات الجزئية والشاملةمراجعة - تصفية الـ Tag7مشروع - متتبع العادات
نظرة عامة على المشروعتحديد كمكتمل2النطاقات والخطوات
المغلقة مقابل نصف المفتوحةالخطوة (Stride)دوال النطاقاتالنطاقات في Switchملخص - شبكة التقويم5الدوال من الرتبة العليا - الجزء الأول
MapFilterReduceربط Map و Filter و Reduceمراجعة - إحصائيات الكلمات