Pengubah Data
Termasuk bagian Logika dan Alur dalam perjalanan Ruby di Coddy. Pelajaran 56 dari 56.
Tantangan akhir, ubah bentuk dataset menjadi laporan ringkasan. Gabungkan pemfilteran, pemetaan, pengelompokan, penanganan error, dan definisi method menjadi satu program.
Tantangan
SedangArray students diberikan. Setiap entri adalah hash dengan :id, :grades (array bilangan bulat, mungkin kosong), dan :subjects (array string).
Definisikan method transform_dataset(students) yang mengembalikan hash dengan dua kata kunci:
:qualified_ids: array:idsiswa yang diurutkan dan memiliki setidaknya satu nilai, serta semua nilainya lebih besar dari70(gunakanall?).:subject_counts: hash yang memetakan setiap mata pelajaran yang diambil siswa yang memenuhi syarat ke jumlah siswa yang memenuhi syarat dan mengambilnya.
Jika array :grades seorang siswa kosong, siswa tersebut tidak memenuhi syarat. Lewati siswa itu tanpa menampilkan pesan.
Lalu panggil method tersebut dan cetak:
- ID siswa yang memenuhi syarat, digabungkan dengan
,, dan diawaliQualified:. Jika tidak ada, cetakQualified: (none). - Satu baris untuk setiap mata pelajaran (diurutkan berdasarkan abjad) dengan format
<subject>: <count>.
Untuk students default, output-nya adalah:
Qualified: S1, S4
biology: 1
history: 1
math: 2
physics: 1Coba sendiri
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: definisikan fungsi transform_dataset(students), kembalikan { qualified_ids:, subject_counts: }
# TODO: tampilkan ID yang memenuhi syarat dan jumlah per subjek
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami String
Ringkasan Method StringInterpolasi StringMenelusuri StringMemisahkan dan MenggabungkanRekap: Perangkai String4Block, Proc, dan Lambda
Apa Itu Block?do..end vs Kurung KurawalKata Kunci yieldParameter BlockProc dan LambdaRangkuman, Iterator Kustom5Andalan Enumerable
Select dan RejectMerangkai MapReduce / Injectcount, all?, any?, none?group_by dan partitionsort_by, min_by, max_byRekap: Alur Data8Pengambilan Keputusan Lanjutan
Case dengan class & regexwhen dengan Banyak NilaiOperator Ternaryif / unless SebarisUlasan, Pengklasifikasi NilaiLatihan sendiri: Compiler Ruby online