الدرس 8 من 8
التقاطع والفرق
- 12 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
من n×m إلى n+m
الشرح
«من سجّل في المادّتين؟» و«من سجّل في الأولى وحدها؟» سؤالان يتكرّران بأشكال كثيرة: وسوم مشتركة، ومعرّفات حُذفت، وصلاحيات ناقصة.
الحلّ البديهي a.filter(x => b.includes(x)) يمرّ على b كاملة مع كل عنصر من a: ألف في ألف تعني مليون مقارنة. ابنِ من b مجموعة Set مرّة واحدة، ثم has لكل عنصر — ألفا خطوة بدل مليون.
الفخّ: بناء المجموعة داخل الدالة الممرَّرة: a.filter(x => new Set(b).has(x)) يبني مجموعة جديدة مع كل عنصر، فيصير أسوأ من includes نفسها.
المطلوب
اكتب intersect(a, b) تُرجع ما في المصفوفتين، وdifference(a, b) تُرجع ما في a وليس في b — كلتاهما بترتيب a، وتقرأ b مرّة واحدة.
معايير التصحيح
6 معايير- intersect تُرجع المشترك
- وبترتيب المصفوفة الأولى
- difference تُرجع ما في الأولى وحدها
- المصفوفات الفارغة لا تكسرهما
- intersect تقرأ الثانية مرّة واحدة
- difference تقرأ الثانية مرّة واحدة