Menu
Coddy logo textTech

Transformador de datos

Parte de la sección Lógica y flujo del Journey de Ruby de Coddy — lección 56 de 56.

El desafío final: transformar un conjunto de datos en un informe de resumen. Combine el filtrado, el mapeo, el agrupamiento, el manejo de errores y la definición de métodos en un solo programa.

challenge icon

Desafío

Intermedio

Se proporciona el arreglo students. Cada entrada es un hash con :id, :grades (un arreglo de enteros, posiblemente vacío) y :subjects (un arreglo de cadenas).

Define un método transform_dataset(students) que devuelva un hash con dos claves:

  • :qualified_ids: un arreglo ordenado de los :ids de los estudiantes que tienen al menos una calificación y todas sus calificaciones son estrictamente superiores a 70 (usa all?).
  • :subject_counts: un hash que mapea cada asignatura cursada por los estudiantes calificados con el número de estudiantes calificados que la cursan.

Si el arreglo :grades de un estudiante está vacío, no está calificado, omítelo silenciosamente.

Luego llama al método e imprime:

  1. Los IDs calificados unidos por , , con el prefijo Qualified: . Si no hay ninguno, imprime Qualified: (none).
  2. Una línea por asignatura (ordenada alfabéticamente) en el formato <subject>: <count>.

Para el valor por defecto de students, la salida es:

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

Pruébalo tú mismo

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), devolver { qualified_ids:, subject_counts: }
# TODO: imprimir los IDs calificados y el conteo de asignaturas
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo