Menu
Coddy logo textTech

Resumen - Procesador de listas

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 50 de 65.

challenge icon

Desafío

Fácil

Crea un sistema de procesamiento de datos flexible que demuestre funciones de orden superior construyendo un procesador de listas personalizable. Tu programa creará diferentes funciones de procesamiento y utilizará una función procesadora principal que puede aplicar cualquier operación a una lista de datos.

  1. Lee una entrada de cadena que contenga números separados por comas (por ejemplo, "10,20,30,40")
  2. Lee una entrada de cadena que represente el primer tipo de operación ("multiply", "add", o "subtract")
  3. Lee una entrada de cadena que represente el valor a utilizar con la primera operación (por ejemplo, "3")
  4. Lee una entrada de cadena que represente el segundo tipo de operación ("multiply", "add", o "subtract")
  5. Lee una entrada de cadena que represente el valor a utilizar con la segunda operación (por ejemplo, "5")
  6. Divide la primera entrada en números individuales y convierte cada uno en un entero
  7. Crea tres funciones de operación:
    • multiplyBy - toma dos enteros y devuelve el primero multiplicado por el segundo
    • addTo - toma dos enteros y devuelve el primero más el segundo
    • subtractFrom - toma dos enteros y devuelve el primero menos el segundo
  8. Crea una función principal llamada processListWithOperation que tome tres parámetros:
    • Una lista de enteros
    • Una función que toma dos enteros y devuelve un entero
    • Un valor entero para usar con la operación
  9. La función processListWithOperation debe aplicar la función dada a cada número de la lista utilizando el valor proporcionado y devolver una nueva lista con los resultados
  10. Aplica la primera operación a la lista original, luego aplica la segunda operación al resultado de la primera operación
  11. Muestra los resultados en el formato exacto que se muestra a continuación

Por ejemplo, si las entradas son "2,4,6", "multiply", "3", "add", y "10", tu programa debería mostrar:

Advanced List Processor
=======================
Original list: [2, 4, 6]
First operation: multiply by 3
After first operation: [6, 12, 18]
Second operation: add 10
Final result: [16, 22, 28]
Processing completed successfully

Si las entradas son "15,25,35", "subtract", "5", "multiply", y "2", tu programa debería mostrar:

Advanced List Processor
=======================
Original list: [15, 25, 35]
First operation: subtract 5
After first operation: [10, 20, 30]
Second operation: multiply by 2
Final result: [20, 40, 60]
Processing completed successfully

Tu programa debe demostrar funciones de orden superior pasando la función de operación apropiada a processListWithOperation basándose en las entradas del tipo de operación. Utiliza sentencias condicionales para determinar qué función pasar para cada operación. La función processListWithOperation debe iterar a través de la lista de entrada, aplicar la función dada con el valor proporcionado a cada elemento y recoger los resultados en una nueva lista. Aplica las operaciones secuencialmente, utilizando el resultado de la primera operación como entrada para la segunda operación.

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Leer entradas
  String? numbersInput = stdin.readLineSync();
  String? firstOperation = stdin.readLineSync();
  String? firstValue = stdin.readLineSync();
  String? secondOperation = stdin.readLineSync();
  String? secondValue = stdin.readLineSync();
  
  // Convertir la entrada de cadena a una lista de enteros
  List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
  int firstOpValue = int.parse(firstValue!);
  int secondOpValue = int.parse(secondValue!);
  
  // TODO: Escribe tu código abajo
  // Crear las tres funciones de operación: multiplyBy, addTo, subtractFrom
  // Crear la función processListWithOperation
  // Aplicar las operaciones secuencialmente y almacenar los resultados
  
  // Mostrar los resultados en el formato requerido
  print('Advanced List Processor');
  print('=======================');
  print('Original list: $originalList');
  // Imprimir la primera operación y el resultado
  // Imprimir la segunda operación y el resultado final
  print('Processing completed successfully');
}

Todas las lecciones de Lógica y Flujo