Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

محوّل البيانات

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

التحدي الختامي: أعد تشكيل مجموعة بيانات إلى تقرير موجز. اجمع بين التصفية والتعيين والتجميع ومعالجة الأخطاء وتعريف الطريقة في برنامج واحد.

challenge icon

التحدي

متوسط

المصفوفة students معطاة. كل إدخال عبارة عن تجزئة تحتوي على :id، و:grades (مصفوفة من الأعداد الصحيحة، وقد تكون فارغة)، و:subjects (مصفوفة من السلاسل النصية).

عرّف طريقة transform_dataset(students) تُرجع تجزئة تحتوي على مفتاحين:

  • :qualified_ids: مصفوفة مرتبة من معرّفات :id للطلاب الذين لديهم درجة واحدة على الأقل وتكون all درجاتهم أكبر من 70 بشكل صارم (استخدم all?).
  • :subject_counts: تجزئة تربط كل مادة يدرسها الطلاب المؤهلون بعدد الطلاب المؤهلين الذين يدرسونها.

إذا كانت مصفوفة :grades الخاصة بأحد الطلاب فارغة، فلا يكون الطالب مؤهلًا، وتخطَّه بصمت.

ثم استدعِ الطريقة واطبع:

  1. معرّفات الطلاب المؤهلين بعد دمجها باستخدام , ، مع إضافة Qualified: في البداية. إذا لم يوجد أيٌّ منها، فاطبع Qualified: (none).
  2. سطرًا واحدًا لكل مادة (مرتبة أبجديًا) بالتنسيق <subject>: <count>.

بالنسبة إلى students الافتراضية، يكون الناتج:

Qualified: S1, S4
biology: 1
history: 1
math: 2
physics: 1

جرّب بنفسك

students = [
  { id: "S1", grades: [85, 92, 78], subjects: ["math", "physics"] },
  { id: "S2", grades: [65, 80, 90], subjects: ["math", "biology"] },
  { id: "S3", grades: [],          subjects: ["art"] },
  { id: "S4", grades: [88, 95],    subjects: ["math", "biology", "history"] },
  { id: "S5", grades: [70, 75],    subjects: ["chemistry"] }
]

# TODO: def transform_dataset(students), return { qualified_ids:, subject_counts: }
# TODO: اطبع معرفات المؤهلين وعدادات المواد
quiz iconاختبر نفسك

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

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

تدرّب بنفسك: مترجم Ruby عبر الإنترنت