Menu
CoddyTech

Resumen - Filtrado de datos

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy. Lección 16 de 65.

challenge icon

Desafío

Fácil

Crea un programa que administre una canalización de análisis de datos filtrando, transformando y procesando conjuntos de datos numéricos. Tu programa debe:

  1. Leer una entrada de cadena que represente el nombre del conjunto de datos
  2. Leer varias entradas enteras que representen valores de datos sin procesar (la entrada terminará cuando recibas -1)
  3. Leer una entrada entera que represente el umbral de valor mínimo para el filtrado
  4. Usar el método where() para filtrar los valores que sean mayores que el umbral
  5. Usar el método map() para elevar al cuadrado cada valor filtrado
  6. Usar el método toList() para convertir el resultado final en una lista
  7. Imprimir los resultados del procesamiento de datos en el formato exacto que se muestra a continuación

Por ejemplo, si el nombre del conjunto de datos es "Sales Data", los valores sin procesar son 2, 5, 1, 8, 3, 6 y el umbral es 3, tu programa debe mostrar:

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

Si el nombre del conjunto de datos es "Temperature Readings", los valores sin procesar son 1, 2 y el umbral es 5, tu programa debe mostrar:

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

Si el nombre del conjunto de datos es "Performance Metrics", los valores sin procesar son 4, 7, 9 y el umbral es 2, tu programa debe mostrar:

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

Tu programa debe encadenar las operaciones en esta secuencia exacta: primero usar where() para filtrar los valores mayores que el umbral, después usar map() para elevar al cuadrado cada valor filtrado y, finalmente, usar toList() para convertir el resultado en una lista. Los resultados intermedios deben mostrar el formato iterable entre paréntesis, mientras que la lista final debe mostrarse con el formato de corchetes.

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Leer el nombre del conjunto de datos
  String? datasetName = stdin.readLineSync();
  
  // Leer valores de datos brutos hasta que se encuentre -1
  List<int> rawData = [];
  while (true) {
    int value = int.parse(stdin.readLineSync()!);
    if (value == -1) break;
    rawData.add(value);
  }
  
  // Leer el valor del umbral
  int threshold = int.parse(stdin.readLineSync()!);
  
  // Mostrar información inicial
  print('Dataset: $datasetName');
  print('Raw data: $rawData');
  print('Threshold: $threshold');
  print('Filtering values > $threshold');
  
  // TODO: Escribe tu código abajo
  // Usa where() para filtrar valores mayores que el umbral
  // Usa map() para elevar al cuadrado cada valor filtrado
  // Usa toList() para convertir el resultado en una lista
  
  // Imprimir los resultados en el formato requerido
  // Recuerda mostrar los valores filtrados en formato de paréntesis
  // Mostrar los valores al cuadrado en formato de paréntesis
  // Mostrar los datos finales procesados en formato de corchetes
  // Imprimir el mensaje de procesamiento completo con el recuento
}

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Dart online