حالات الفوز والخسارة في الألعاب
استنتاج الفائز مع اللعب الأمثل
حالات الفوز والخسارة في الألعاب درس مجاني في Coding Interview Prep على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Coding Interview Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.
لاعبان ولعب مثالي
في لعبة توافقية، يتناوب لاعبان على تنفيذ النقلات، ويلعب كلاهما بأفضل طريقة ممكنة، ويخسر من لا يستطيع تنفيذ نقلة. ومهمتكم هي التنبؤ بالفائز فحسب. 🎯
لكل وضع تسمية
يمثل كل وضع في اللعبة حالة. ومهمتكم الكاملة هي تحديد كل حالة على أنها فوز أو خسارة للاعب الذي يستعد لتنفيذ النقلة.
ماذا تعني الحالة الرابحة
تكون الحالة رابحة إذا كان لدى اللاعب الذي عليه الدور نقلة واحدة على الأقل تؤدي إلى حالة خاسرة للخصم.
ماذا تعني الحالة الخاسرة
تكون الحالة خاسرة عندما تؤدي كل نقلة تنفذونها إلى منح الخصم حالة رابحة. فلا مفر لكم مهما فعلتم.
الحالة الأساسية
الوضع الذي لا يمكنكم فيه تنفيذ أي نقلة هو الحالة الأساسية. واللاعب الذي يواجهه خسر بالفعل، لذا نضع عليه علامة الخسارة.
البناء انطلاقًا من الأسفل
ابدؤوا بالحالات الأساسية ثم توسعوا إلى الخارج. وتعتمد تسمية كل حالة جديدة فقط على الحالات التي تؤدي إليها نقلاتها.
تكفي نقلة جيدة واحدة
للفوز، تحتاجون إلى نقلة واحدة فقط تؤدي إلى حالة خاسرة للخصم. ويكفي العثور على أي طريق واحد للنجاة.
مثال صغير
خذوا حجرًا أو حجرين من كومة، ويفوز من يأخذ الحجر الأخير. عند وجود 0 حجر يخسر اللاعب الذي عليه الدور، ولذلك فهي حالة خاسرة.
برمجة اختبار الفوز
تحدد هذه الاستدعاءات التكرارية تسمية الحالة من خلال تجربة كل نقلة، ثم استدعاء الدالة تكراريًا على النتيجة. ⚙️
def win(n):
if n == 0:
return False
return any(not win(n - k) for k in (1, 2))استخدموا التخزين المؤقت للحفاظ على السرعة
تتكرر الحالات عبر الفروع، لذا خزّنوا نتيجة كل حالة مؤقتًا. وتحول memo بسيطة العمل الأسي إلى زمن خطي.
from functools import lru_cache
@lru_cache(None)
def win(n):
return n != 0 and any(not win(n - k) for k in (1, 2))التناظر اختصار مفيد
إذا كان الوضع متناظرًا تمامًا، يمكن للاعب الثاني غالبًا محاكاة نقلات الخصم والفوز. انتبهوا إلى حيلة المحاكاة هذه.
تحقق سريع
أنتم أمام حالة ما. متى تكون هذه الحالة خاسرة بالنسبة إليكم؟
مراجعة
تحددون الآن الحالات: فالحالة الرابحة لها نقلة واحدة تؤدي إلى خسارة الخصم، أما الخاسرة فلا تملك أي نقلة من هذا النوع. ابنوا الحل انطلاقًا من الحالات الأساسية واستخدموا التخزين المؤقت. 🧠
الأسئلة الشائعة
هل درس «حالات الفوز والخسارة في الألعاب» مجاني؟
نعم — نص درس «حالات الفوز والخسارة في الألعاب» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Coding Interview Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Coding Interview Prep 4 دروس في المجموع.
ماذا ستتعلم في «حالات الفوز والخسارة في الألعاب»؟
استنتاج الفائز مع اللعب الأمثل تتمرن على Coding Interview Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Coding Interview Prep؟
لا تُشترط خبرة سابقة. Coding Interview Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «حالات الفوز والخسارة في الألعاب»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Coding Interview Prep هذا؟
نعم. كل درس في Coding Interview Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- حالات الفوز والخسارة في الألعاب
- لعبة Nim وعدد Grundy
- الالتقاء في المنتصف
- تصحيح الأخطاء بسرعة: اختبارات الضغط والفرز