データ変換
CoddyのRubyジャーニー「ロジックとフロー」セクションの一部。レッスン 56/56。
総合課題では、データセットを要約レポートに変換します。フィルタリング、マッピング、グループ化、エラー処理、メソッド定義を1つのプログラムに組み合わせます。
チャレンジ
中級配列 students が与えられています。各エントリは、:id、:grades(空の場合もある整数の配列)、:subjects(文字列の配列)を持つハッシュです。
次の2つのキーを持つハッシュを返すメソッド transform_dataset(students) を定義してください。
:qualified_ids: 少なくとも1つの成績があり、すべての成績が70を厳密に上回る学生の:idのソート済み配列(all?を使用してください)。:subject_counts: 合格した学生が履修している各科目を、その科目を履修している合格学生の人数に対応付けるハッシュ。
学生の :grades 配列が空の場合、その学生は合格ではないものとして、何も表示せずにスキップしてください。
次にメソッドを呼び出して、以下を出力してください。
- 合格した学生のIDを
,で結合し、先頭にQualified:を付けたもの。該当者がいない場合はQualified: (none)を出力します。 - 科目ごとに1行(アルファベット順)で、形式は
<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) を定義し、{ qualified_ids:, subject_counts: } を返す
# TODO: qualified IDs と subject counts を print する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Rubyオンラインコンパイラ