Menu
Coddy logo textTech

まとめ:データフィルタリング

CoddyのDartジャーニー「論理とフロー」セクションの一部。レッスン 16/65。

challenge icon

チャレンジ

簡単

数値データセットのフィルタリング、変換、および処理を行うデータ分析パイプラインを管理するプログラムを作成してください。プログラムは以下の手順を実行する必要があります:

  1. データセット名を表す文字列の入力を読み込む
  2. 生データ値を表す複数の整数入力を読み込む(入力は -1 を受け取った時点で終了します)
  3. フィルタリングのための最小値のしきい値を表す整数入力を読み込む
  4. where() メソッドを使用して、しきい値より大きい値をフィルタリングする
  5. map() メソッドを使用して、フィルタリングされた各値を2乗する
  6. toList() メソッドを使用して、最終結果をリストに変換する
  7. 以下の形式でデータ処理結果を出力する

例えば、データセット名が "Sales Data"、生データ値が 2, 5, 1, 8, 3, 6、しきい値が 3 の場合、プログラムは以下のように出力する必要があります:

Dataset: Sales Data
Raw data: [2, 5, 1, 8, 3, 6]
Threshold: 3
Filtering values > 3
Filtered values: (5, 8, 6)
Squaring filtered values
Squared values: (25, 64, 36)
Final processed data: [25, 64, 36]
Processing complete: 3 values processed

データセット名が "Temperature Readings"、生データ値が 1, 2、しきい値が 5 の場合、プログラムは以下のように出力する必要があります:

Dataset: Temperature Readings
Raw data: [1, 2]
Threshold: 5
Filtering values > 5
Filtered values: ()
Squaring filtered values
Squared values: ()
Final processed data: []
Processing complete: 0 values processed

データセット名が "Performance Metrics"、生データ値が 4, 7, 9、しきい値が 2 の場合、プログラムは以下のように出力する必要があります:

Dataset: Performance Metrics
Raw data: [4, 7, 9]
Threshold: 2
Filtering values > 2
Filtered values: (4, 7, 9)
Squaring filtered values
Squared values: (16, 49, 81)
Final processed data: [16, 49, 81]
Processing complete: 3 values processed

プログラムは、この正確な順序で操作を連結する必要があります:まず where() を使用してしきい値より大きい値をフィルタリングし、次に map() を使用してフィルタリングされた各値を2乗し、最後に toList() を使用して結果をリストに変換します。中間結果は丸括弧内の反復可能(iterable)形式で表示し、最終的なリストは角括弧形式で表示する必要があります。

自分で試してみよう

import 'dart:io';

void main() {
  // データセット名を読み込む
  String? datasetName = stdin.readLineSync();
  
  // -1が入力されるまで生のデータ値を読み込む
  List<int> rawData = [];
  while (true) {
    int value = int.parse(stdin.readLineSync()!);
    if (value == -1) break;
    rawData.add(value);
  }
  
  // しきい値を読み込む
  int threshold = int.parse(stdin.readLineSync()!);
  
  // 初期情報を表示する
  print('Dataset: $datasetName');
  print('Raw data: $rawData');
  print('Threshold: $threshold');
  print('Filtering values > $threshold');
  
  // TODO: 以下にコードを記述してください
  // where() を使用して、しきい値より大きい値をフィルタリングします
  // map() を使用して、フィルタリングされた各値を2乗します
  // toList() を使用して、結果をリストに変換します
  
  // 必要な形式で結果を出力します
  // フィルタリングされた値を括弧形式で表示することを忘れないでください
  // 2乗された値を括弧形式で表示します
  // 最終的な処理済みデータを角括弧形式で表示します
  // カウントを含めた処理完了メッセージを出力します
}

論理とフローのすべてのレッスン

自分で練習してみよう: Dartオンラインコンパイラ