Menu
Coddy logo textTech

まとめ - リストオーガナイザー

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

challenge icon

チャレンジ

簡単

数値のリストに対して一連の操作を順番に実行し、データ処理パイプラインを管理するプログラムを作成してください。プログラムは以下の手順を行う必要があります:

  1. データセット名を表す文字列の入力を読み込む
  2. 元のデータ値を表す複数の整数の入力を読み込む(入力は -999 を受け取った時点で終了します)
  3. リストの先頭(位置 0)に値 100 を挿入する
  4. removeWhere() を使用して、リストからすべての負の数値を削除する
  5. sort() を使用して、残りの数値を昇順に並べ替える
  6. isEmpty を使用して、最終的なリストが空かどうかを確認する
  7. データ処理の結果を、以下に示す正確な形式で出力する

例えば、データセット名が "Sales Data" で、値が 45, -12, 78, -5, 23 の場合、プログラムは以下のように出力する必要があります:

Dataset: Sales Data
Original data: [45, -12, 78, -5, 23]
Step 1: Inserted 100 at beginning
After insertion: [100, 45, -12, 78, -5, 23]
Step 2: Removed negative numbers
After removal: [100, 45, 78, 23]
Step 3: Sorted in ascending order
After sorting: [23, 45, 78, 100]
Final result: List is not empty
Processing complete: 4 values remaining

データセット名が "Temperature Readings" で、値が -10, -5, -20 の場合、プログラムは以下のように出力する必要があります:

Dataset: Temperature Readings
Original data: [-10, -5, -20]
Step 1: Inserted 100 at beginning
After insertion: [100, -10, -5, -20]
Step 2: Removed negative numbers
After removal: [100]
Step 3: Sorted in ascending order
After sorting: [100]
Final result: List is not empty
Processing complete: 1 values remaining

データセット名が "Error Values" で、唯一の値が -50 の場合、プログラムは以下のように出力する必要があります:

Dataset: Error Values
Original data: [-50]
Step 1: Inserted 100 at beginning
After insertion: [100, -50]
Step 2: Removed negative numbers
After removal: [100]
Step 3: Sorted in ascending order
After sorting: [100]
Final result: List is not empty
Processing complete: 1 values remaining

プログラムは、指定された正確な順序ですべての操作を実行する必要があります:まず位置 0 に値 100 を insert() し、次に removeWhere() を使用して負の数値を削除し、次にリストを sort() し、最後にリストが isEmpty かどうかを確認します。最終的なリストに要素がない場合は "List is empty" を、要素がある場合は "List is not empty" を表示してください。

自分で試してみよう

import 'dart:io';

void main() {
  // データセット名を読み込む
  String? datasetName = stdin.readLineSync();
  
  // -999が入力されるまで数値を読み込む
  List<int> originalData = [];
  while (true) {
    int? number = int.parse(stdin.readLineSync()!);
    if (number == -999) {
      break;
    }
    originalData.add(number);
  }
  
  // 初期情報を出力する
  print('Dataset: $datasetName');
  print('Original data: $originalData');
  
  // TODO: 以下にコードを記述してください
  // 1. 最初に100を挿入する(位置0)
  // 2. removeWhere()を使用してすべての負の数値を削除する
  // 3. sort()を使用してリストを昇順にソートする
  // 4. isEmptyを使用してリストが空かどうかを確認する
  // 5. 要求された形式で結果を出力する
  
}

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