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

المجموعات الجزئية والشاملة

جزء من قسم المنطق والتدفق في رحلة Swift على Coddy. الدرس 21 من 56.

بالإضافة إلى دمج المجموعات، يمكنك أيضاً مقارنتها.

تُجيب isSubset(of:) على السؤال "هل كل عنصر من عناصر مجموعتي موجود أيضاً في المجموعة الأخرى؟"

let small: Set = [1, 2]
let big:   Set = [1, 2, 3, 4]
small.isSubset(of: big)            // true
big.isSubset(of: small)            // false

isSuperset(of:) هي العكس، "هل أحتوي على كل عنصر من عناصر المجموعة الأخرى؟":

big.isSuperset(of: small)          // true

isDisjoint(with:) تعيد القيمة true عندما لا تشترك المجموعتان في أي عناصر على الإطلاق:

let evens: Set = [2, 4, 6]
let odds:  Set = [1, 3, 5]
evens.isDisjoint(with: odds)       // true

هذه المسندات الثلاثة هي الطريقة الأكثر وضوحاً للتعبير عن "الأذونات المطلوبة" أو قواعد "الكل" / "لا شيء" دون كتابة حلقة تكرار يدوية.

challenge icon

التحدي

متوسط

أنت تتحقق من صلاحيات الوصول لمستند. اقرأ ثلاثة أسطر:

  1. صلاحيات المستخدم (مفصولة بفاصلة)
  2. الصلاحيات المطلوبة (مفصولة بفاصلة)
  3. الصلاحيات المحظورة (مفصولة بفاصلة)

يُمنح المستخدم حق الوصول عندما:

  • تكون صلاحياته مجموعة شاملة (superset) للصلاحيات المطلوبة (أي يمتلك كل صلاحية مطلوبة)
  • تكون صلاحياته منفصلة (disjoint) عن الصلاحيات المحظورة

اطبع واحداً فقط مما يلي:

  • granted
  • missing: <...> عندما تكون هناك صلاحيات مطلوبة مفقودة (مرتبة، ومفصولة بفاصلة). اطبع هذا حتى لو كانت هناك صلاحيات محظورة ممتلكة أيضاً.
  • forbidden: <...> عندما لا تكون هناك صلاحيات مطلوبة مفقودة ولكن توجد صلاحيات محظورة ممتلكة (مرتبة، ومفصولة بفاصلة)

للمدخلات read,write,admin / read,write / delete، المخرج هو granted.

للمدخلات read / read,write / delete، المخرج هو missing: write.

جرّب بنفسك

let user = Set(readLine()!.components(separatedBy: ","))
let required = Set(readLine()!.components(separatedBy: ","))
let forbidden = Set(readLine()!.components(separatedBy: ","))

// TODO: تم المنح | مفقود: ... | محظور: ...
quiz iconاختبر نفسك

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

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

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