Menu
CoddyTech
flag Ar iconالعربيةdown icon

التصفية حسب الفئة

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

الميزة التالية: دع اللاعب يختار فئة واطرح أسئلة من تلك الفئة فقط.

استخدم filter في بنك الأسئلة مع جعل الفئة هي الشرط (predicate)، ثم قم بتكرار النتيجة. نتيجة filter هي مصفوفة جديدة تماماً، بينما يظل البنك الأصلي كما هو.

let chosen = questions.filter { $0.0 == category }
for (_, text, _) in chosen {
    print(text)
    // ...
}

إذا كان chosen فارغًا، فاطبع رسالة بديلة ودودة بدلاً من تشغيل الحلقة. هذا يمنع البرنامج من التوقف دون استجابة عندما يكتب المستخدم فئة غير موجودة.

challenge icon

التحدي

متوسط

تحتوي بنك الأسئلة الموسع على ستة مدخلات عبر ثلاث فئات: math، و geo، و science.

اقرأ الفئة المختارة من السطر الأول من المدخلات، ثم اقرأ إجابة واحدة للاعب لكل سطر متبقٍ بالترتيب. قم بتصفية البنك حسب الفئة (مطابقة غير حساسة لحالة الأحرف)، ثم اطرح كل سؤال بالترتيب.

اطبع، لكل سؤال من الفئة المختارة:

  1. نص السؤال
  2. correct أو wrong باستخدام التقييم المتساهل من الدرس السابق

انتهِ بـ Score: <n>/<m> حيث m هو عدد الأسئلة في الفئة. إذا كانت الفئة غير معروفة، اطبع Unknown category: <name> ولا شيء غير ذلك.

للمدخلات math في السطر 1 و 4 / 3.14 في الأسطر 2-3، المخرجات هي:

2 + 2?
correct
Value of pi to 2 decimals?
correct
Score: 2/2

جرّب بنفسك

let questions: [(String, String, String)] = [
    ("math", "2 + 2?", "4"),
    ("math", "Value of pi to 2 decimals?", "3.14"),
    ("geo", "Capital of France?", "Paris"),
    ("geo", "Largest ocean?", "Pacific"),
    ("science", "Color of grass?", "green"),
    ("science", "H2O is?", "water")
]
let category = readLine()!

// مهام: التصفية حسب الفئة (غير حساس لحالة الأحرف)؛ إذا كانت فارغة، اطبع Unknown ...؛
// بخلاف ذلك، قم بالتكرار، واسأل، وصحح بتساهل، واطبع النتيجة: n/m
quiz iconاختبر نفسك

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

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

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