0Pricing
Competitive Programming Academy · درس

التباديل وفكرة N-Queens

وضع العناصر والرجوع عند التعارضات

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

من المجموعات الجزئية إلى الترتيبات

إن التبديلة ترتيب لجميع العناصر بترتيب معين. ويُعد توليد التبديلات مهارة التراجع التالية بعد المجموعات الجزئية. 🔀

كم عدد التبديلات

يوجد مضروب n من التبديلات لعناصر عددها n، لأن الخانة الأولى تملك n اختيارات، والتالية n ناقص 1، وهكذا. وينمو العدد بسرعة.

ضعوا عنصرًا واحدًا في كل مرة

يملأ الاستدعاء الذاتي المواضع من اليسار إلى اليمين. وفي كل خطوة تختارون عنصرًا غير مستخدم، وتضعونه، ثم تستدعون الدالة ذاتيًا لبقية العناصر.

تتبّعوا العناصر المستخدمة

تحدد مصفوفة used المنطقية العناصر الموضوعة بالفعل، بحيث يظهر كل عنصر مرةً واحدةً بالضبط في كل تبديلة.

التبديلات في التعليمات البرمجية

يضع هذا التراجع قيمةً غير مستخدمة، ثم يستدعي الدالة ذاتيًا، ثم يحررها للفرع التالي.

def perm(cur):
    if len(cur) == n:
        out.append(cur[:]); return
    for x in a:
        if x not in cur:
            perm(cur + [x])

استخدموا itertools عندما يُسمح بذلك

في المسابقات السريعة، توفر itertools.permutations كل ترتيب من دون كتابة الاستدعاء الذاتي بأنفسكم.

from itertools import permutations
for p in permutations(a):
    print(p)

مسألة N-Queens

تطلب N-Queens وضع n من الملكات على لوحة حجمها n في n بحيث لا تهاجم أي منها الأخرى. وهي لغز التراجع الكلاسيكي. 👑

ملكة واحدة في كل صف

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

تحققوا من التعارضات الثلاثة

قبل الوضع، ارفضوا أي عمود أو قطر مستخدم مسبقًا. وتتبعوا الأعمدة المستخدمة واتجاهَي القطرين في مجموعتين.

if c in cols or r-c in d1 or r+c in d2:
    continue

تراجعوا عند الوصول إلى طريق مسدود

إذا لم ينجح أي عمود في صف ما، يفشل الفرع. عندها أجروا تراجعًا، وأزيلوا الملكة الأخيرة، وجربوا خيارها التالي.

النمط المشترك

تشترك التبديلات وN-Queens في بنية واحدة: اختيار، واستدعاء ذاتي، وإلغاء. وما إن تروها حتى تصبح معظم ألغاز الوضع قابلةً للحل بالقالب نفسه.

تحقق سريع

لماذا تضع مسألة N-Queens ملكةً واحدةً فقط في كل صف؟

مراجعة: اختاروا، واستدعوا ذاتيًا، وألغوا

ولّدتم التبديلات بوضع العناصر غير المستخدمة، وتعلّمتم أن N-Queens تستخدم النمط نفسه: اختيار، واستدعاء ذاتي، وإلغاء، مع فحوص التعارض. 🎯

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

هل درس «التباديل وفكرة N-Queens» مجاني؟

نعم — نص درس «التباديل وفكرة N-Queens» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

ماذا ستتعلم في «التباديل وفكرة N-Queens»؟

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

هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟

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

كم من الوقت يستغرق درس «التباديل وفكرة N-Queens»؟

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

هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟

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

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

  1. التفكير递归يًا: الحالة الأساسية والاستدعاء递归ي
  2. توليد جميع المجموعات الجزئية
  3. التباديل وفكرة N-Queens
  4. التقليم للنجاة من الحد الزمني
← العودة إلى Competitive Programming Academy