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

الاتحاد والتقاطع

جزء من قسم المنطق والتدفق في رحلة 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 جديدة. تظل المجموعات الأصلية كما هي دون تغيير. ترتيب التكرار عبر النتيجة غير مضمون، لذا قم بالفرز قبل الطباعة.

challenge icon

التحدي

سهل

اقرأ سطرين من المدخلات. كل منهما عبارة عن قائمة من الأعداد الصحيحة المفصولة بفاصلة.

عاملهما كمجموعتين a و b. اطبع سطرين:

  1. التقاطع، مرتباً تصاعدياً، وموصولاً بـ , (أو سطر فارغ عندما يكون فارغاً)
  2. الاتحاد، مرتباً تصاعدياً، وموصولاً بـ ,

بالنسبة للمدخلات 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: التقاطع مرتب ومدمج، الاتحاد مرتب ومدمج
quiz iconاختبر نفسك

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

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