Menu
Coddy logo textTech

Transformateur de données

Fait partie de la section Logique et Flux du Journey Ruby de Coddy. Leçon 56 sur 56.

Le défi final consiste à transformer un jeu de données en rapport récapitulatif. Combine le filtrage, la transformation, le regroupement, la gestion des erreurs et la définition de méthodes en un seul programme.

challenge icon

Défi

Moyen

Le tableau students est fourni. Chaque entrée est un hash avec :id, :grades (un tableau d’entiers, éventuellement vide) et :subjects (un tableau de chaînes).

Définissez une méthode transform_dataset(students) qui renvoie un hash avec deux clés :

  • :qualified_ids : tableau trié des :id des étudiants qui ont au moins une note et dont toutes les notes sont strictement supérieures à 70 (utilisez all?).
  • :subject_counts : hash associant chaque matière suivie par les étudiants qualifiés au nombre d’étudiants qualifiés qui la suivent.

Si le tableau :grades d’un étudiant est vide, celui-ci n’est pas qualifié ; ignorez-le sans afficher de message.

Appelez ensuite la méthode et affichez :

  1. Les identifiants qualifiés joints par , , précédés de Qualified: . S’il n’y en a aucun, affichez Qualified: (none).
  2. Une ligne par matière (triée par ordre alphabétique) au format <subject>: <count>.

Pour le students par défaut, la sortie est :

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

Essayez vous-même

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: afficher les IDs qualifiés et les comptages de sujets
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux

Entraînez-vous par vous-même : Compilateur Ruby en ligne