Menu
Coddy logo textTech

ממיר נתונים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Ruby של Coddy. שיעור 56 מתוך 56.

אתגר הסיום: עצבו מחדש מערך נתונים לדוח סיכום. שלבו סינון, מיפוי, קיבוץ, טיפול בשגיאות והגדרת מתודה לתוכנית אחת.

challenge icon

אתגר

בינוני

נתון המערך students. כל רשומה היא hash עם :id, :grades (מערך של מספרים שלמים, שיכול להיות ריק), ו-:subjects (מערך של מחרוזות).

הגדירו מתודה transform_dataset(students) שמחזירה hash עם שני מפתחות:

  • :qualified_ids: מערך ממוין של :id של תלמידים שיש להם לפחות ציון אחד, וכל הציונים שלהם גבוהים ממש מ-70 (השתמשו ב-all?).
  • :subject_counts: hash שממפה כל מקצוע שלמדו התלמידים הכשירים למספר התלמידים הכשירים שלומדים אותו.

אם מערך :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: print מזהי התלמידים העומדים בתנאים ואת מספר התלמידים בכל מקצוע
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר Ruby אונליין