0Pricing
Coding Interview Prep · درس

تعداد المجموعات الجزئية بقناع البتات

تكرار جميع المجموعات الجزئية عبر الأعداد الصحيحة

تعداد المجموعات الجزئية بقناع البتات درس مجاني في Coding Interview Prep على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Coding Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

المجموعات الجزئية كأعداد

يمكن ربط كل مجموعة جزئية من n عنصرًا بـ عدد صحيح واحد. ابدؤوا العد من 0، وستحدد بتات كل عدد العناصر الموجودة بالضبط. 🙂

كم عدد المجموعات الجزئية

تحتوي مجموعة مكوّنة من n عنصرًا على 2^n مجموعة جزئية. لذلك، فإن تكرار عدد صحيح من 0 إلى 2^n ناقص 1 يمرّ على كل مجموعة جزئية مرة واحدة بالضبط.

for mask in range(1 << n):
    pass  # mask is one subset

1 << n هو العدد

تساوي الإزاحة 1 << n العدد 2 مرفوعًا للقوة n. وهذه طريقة واضحة وسريعة لكتابة الحد الأعلى لحلقة المجموعات الجزئية.

قراءة البت i

للتحقق مما إذا كان العنصر i موجودًا في المجموعة الجزئية، اختبر البت الخاص به باستخدام mask و1 مزاحة إلى اليسار بمقدار i. وتعني النتيجة غير الصفرية أنه مُضمَّن.

if mask & (1 << i):
    take(items[i])

إنشاء قائمة العناصر المختارة

مرّر على كل موضع بت، واجمع العناصر التي يكون بتها مضبوطًا. وهكذا تحوّل mask واحدًا إلى المجموعة الجزئية الفعلية التي يمثّلها.

chosen = [items[i] for i in range(n) if mask & (1 << i)]

المجموعتان الفارغة والكاملة

تمثّل القيمة mask 0 المجموعة الجزئية الفارغة، بينما يمثّل mask المكوّن من جميع الواحدات المجموعة الكاملة. وتحصل على كلتيهما تلقائيًا لأن حلقتك تغطي كل قيمة.

جمع عناصر المجموعة الجزئية

داخل الحلقة، اجمع العناصر المختارة لتقييم كل مجموعة جزئية. وهذا هو جوهر كثير من حلول القوة الغاشمة الصغيرة.

total = sum(v[i] for i in range(n) if mask & (1 << i))

عدّ البتات المضبوطة

يساوي عدد العناصر المختارة قيمة popcount في mask. وفي Python، تعطيك ‎bin(mask).count('1')‎ النتيجة فورًا.

size = bin(mask).count("1")

انتبه إلى الحد

بما أن عدد المجموعات الجزئية هو 2^n، فإن هذه التقنية تناسب قيمًا صغيرة من n فقط. وتُعدّ قيمة n تساوي 20 تقريبًا الحد العملي للتعداد الكامل.

لماذا تتفوّق أقنعة البتات

تستبدل حلقة واحدة من الأعداد حلقات متداخلة معقدة، كما أن عمليات البتات سريعة. فيبقى الكود قصيرًا وواضحًا وسهل الاختبار.

نمط قابل لإعادة الاستخدام

كرّر على mask، وفكّ ترميز بتاته، وقيّم المجموعة الجزئية، واحتفظ بالأفضل. احفظ هذا القالب، وستصبح كثير من مسائل المجموعات الجزئية روتينية.

تحقق سريع

تريد اختبار ما إذا كان العنصر i مُضمّنًا في المجموعة الجزئية التي يرمّز إليها mask.

مراجعة

كرّر على mask من 0 إلى 2^n ناقص 1، واقرأ البتات باستخدام mask و1 مزاحة إلى اليسار، ثم قيّم كل مجموعة جزئية. إنها طريقة قوة غاشمة واضحة للقيم الصغيرة من n. 🚀

الأسئلة الشائعة

هل درس «تعداد المجموعات الجزئية بقناع البتات» مجاني؟

نعم — نص درس «تعداد المجموعات الجزئية بقناع البتات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Coding Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.

ماذا ستتعلم في «تعداد المجموعات الجزئية بقناع البتات»؟

تكرار جميع المجموعات الجزئية عبر الأعداد الصحيحة تتمرن على Coding Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Coding Interview Prep؟

لا تُشترط خبرة سابقة. Coding Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.

كم من الوقت يستغرق درس «تعداد المجموعات الجزئية بقناع البتات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Coding Interview Prep هذا؟

نعم. كل درس في Coding Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. القوة الغاشمة استراتيجية صالحة
  2. التعداد باستخدام itertools
  3. تعداد المجموعات الجزئية بقناع البتات
  4. تقليص مساحة البحث بذكاء
← العودة إلى Coding Interview Prep