Menu
Coddy logo textTech

Trasformatore di dati

Fa parte della sezione Logica e flusso del percorso Ruby di Coddy. Lezione 56 di 56.

La sfida finale: trasforma un dataset in un report riepilogativo. Combina filtraggio, mappatura, raggruppamento, gestione degli errori e definizione di metodi in un unico programma.

challenge icon

Sfida

Medio

L'array students è fornito. Ogni elemento è un hash con :id, :grades (un array di numeri interi, che può essere vuoto) e :subjects (un array di stringhe).

Definisci un metodo transform_dataset(students) che restituisca un hash con due chiavi:

  • :qualified_ids: array ordinato di :id degli studenti che hanno almeno un voto e i cui voti sono tutti strettamente superiori a 70 (usa all?).
  • :subject_counts: un hash che associa ogni materia studiata dagli studenti qualificati al numero di studenti qualificati che la studiano.

Se l'array :grades di uno studente è vuoto, lo studente non è qualificato; ignoralo senza segnalarlo.

Poi chiama il metodo e stampa:

  1. Gli ID degli studenti qualificati uniti con , , preceduti da Qualified: . Se non ce ne sono, stampa Qualified: (none).
  2. Una riga per ogni materia (in ordine alfabetico) nel formato <subject>: <count>.

Per l'array predefinito students, l'output è:

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

Provalo tu

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 qualified IDs and subject counts
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Ruby online