Menu
CoddyTech

Recapitulação - Filtragem de Dados

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy. Lição 16 de 65.

challenge icon

Desafio

Fácil

Crie um programa que gerencie um pipeline de análise de dados filtrando, transformando e processando conjuntos de dados numéricos. Seu programa deve:

  1. Ler uma entrada de texto que represente o nome do conjunto de dados
  2. Ler várias entradas inteiras que representem valores de dados brutos (a entrada terminará quando você receber -1)
  3. Ler uma entrada inteira que represente o limite mínimo de valor para a filtragem
  4. Usar o método where() para filtrar os valores maiores que o limite
  5. Usar o método map() para elevar ao quadrado cada valor filtrado
  6. Usar o método toList() para converter o resultado final em uma lista
  7. Imprimir os resultados do processamento dos dados no formato exato mostrado abaixo

Por exemplo, se o nome do conjunto de dados for "Sales Data", os valores brutos forem 2, 5, 1, 8, 3, 6 e o limite for 3, seu programa deverá produzir:

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

Se o nome do conjunto de dados for "Temperature Readings", os valores brutos forem 1, 2 e o limite for 5, seu programa deverá produzir:

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

Se o nome do conjunto de dados for "Performance Metrics", os valores brutos forem 4, 7, 9 e o limite for 2, seu programa deverá produzir:

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

Seu programa deve encadear as operações exatamente nesta sequência: primeiro usar where() para filtrar os valores maiores que o limite, depois usar map() para elevar ao quadrado cada valor filtrado e, por fim, usar toList() para converter o resultado em uma lista. Os resultados intermediários devem mostrar o formato iterável entre parênteses, enquanto a lista final deve ser exibida entre colchetes.

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler o nome do conjunto de dados
  String? datasetName = stdin.readLineSync();
  
  // Ler valores de dados brutos até que -1 seja encontrado
  List<int> rawData = [];
  while (true) {
    int value = int.parse(stdin.readLineSync()!);
    if (value == -1) break;
    rawData.add(value);
  }
  
  // Ler o valor do limite (threshold)
  int threshold = int.parse(stdin.readLineSync()!);
  
  // Exibir informações iniciais
  print('Dataset: $datasetName');
  print('Raw data: $rawData');
  print('Threshold: $threshold');
  print('Filtering values > $threshold');
  
  // TODO: Escreva seu código abaixo
  // Use where() para filtrar valores maiores que o limite
  // Use map() para elevar ao quadrado cada valor filtrado
  // Use toList() para converter o resultado em uma lista
  
  // Imprimir os resultados no formato exigido
  // Lembre-se de mostrar os valores filtrados no formato entre parênteses
  // Mostrar os valores ao quadrado no formato entre parênteses
  // Mostrar os dados finais processados no formato entre colchetes
  // Imprimir mensagem de processamento concluído com a contagem
}

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de Dart online