Menu
CoddyTech

Повторение — фильтрация данных

Часть раздела Логика и управление потоком путешествия по Dart на Coddy. Урок 16 из 65.

challenge icon

Задание

Легко

Создайте программу, которая управляет конвейером аналитики данных путем фильтрации, преобразования и обработки числовых наборов данных. Ваша программа должна:

  1. Прочитать строковый ввод, представляющий название набора данных (dataset name)
  2. Прочитать несколько целочисленных вводов, представляющих необработанные значения данных (ввод закончится, когда вы получите -1)
  3. Прочитать целочисленный ввод, представляющий минимальный порог значения для фильтрации
  4. Использовать метод where() для фильтрации значений, которые больше порогового значения
  5. Использовать метод map() для возведения каждого отфильтрованного значения в квадрат
  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() для возведения каждого отфильтрованного значения в квадрат и, наконец, использовать toList() для преобразования результата в список. Промежуточные результаты должны отображаться в формате итерируемого объекта в круглых скобках, в то время как окончательный список должен отображаться в формате квадратных скобок.

Попробуйте сами

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() для возведения каждого отфильтрованного значения в квадрат
  // Используйте toList() для преобразования результата в список
  
  // Вывод результатов в требуемом формате
  // Не забудьте показать отфильтрованные значения в формате с круглыми скобками
  // Покажите возведенные в квадрат значения в формате с круглыми скобками
  // Покажите окончательные обработанные данные в формате с квадратными скобками
  // Выведите сообщение о завершении обработки с указанием количества
}

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Dart