Menu
CoddyTech

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 flexible de procesamiento de datos que demuestre las funciones de orden superior mediante la creación de un procesador de listas personalizable. Tu programa creará distintas 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 (p. ej., "10,20,30,40")
  2. Lee una entrada de cadena que represente el tipo de la primera operación ("multiply", "add" o "subtract")
  3. Lee una entrada de cadena que represente el valor que se usará con la primera operación (p. ej., "3")
  4. Lee una entrada de cadena que represente el tipo de la segunda operación ("multiply", "add" o "subtract")
  5. Lee una entrada de cadena que represente el valor que se usará con la segunda operación (p. ej., "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: recibe dos enteros y devuelve el primero multiplicado por el segundo
    • addTo: recibe dos enteros y devuelve la suma del primero y el segundo
    • subtractFrom: recibe dos enteros y devuelve el primero menos el segundo
  8. Crea una función principal llamada processListWithOperation que reciba tres parámetros:
    • Una lista de enteros
    • Una función que recibe dos enteros y devuelve un entero
    • Un valor entero que se usará con la operación
  9. La función processListWithOperation debe aplicar la función indicada 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 y, después, aplica la segunda operación al resultado de la primera
  11. Muestra los resultados exactamente en el formato que se indica 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 las funciones de orden superior pasando la función de operación correspondiente a processListWithOperation según las entradas del tipo de operación. Usa instrucciones condicionales para determinar qué función pasar para cada operación. La función processListWithOperation debe recorrer la lista de entrada, aplicar a cada elemento la función indicada con el valor proporcionado y recopilar los resultados en una nueva lista. Aplica las operaciones secuencialmente, utilizando el resultado de la primera operación como entrada para la segunda.

Pruébalo tú mismo

import 'dart:io';

void main() {
  // Lee las entradas
  String? numbersInput = stdin.readLineSync();
  String? firstOperation = stdin.readLineSync();
  String? firstValue = stdin.readLineSync();
  String? secondOperation = stdin.readLineSync();
  String? secondValue = stdin.readLineSync();
  
  // Convierte la entrada de texto en 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 a continuación
  // Crea las tres funciones de operación: multiplyBy, addTo, subtractFrom
  // Crea la función processListWithOperation
  // Aplica las operaciones secuencialmente y guarda los resultados
  
  // Muestra los resultados en el formato requerido
  print('Advanced List Processor');
  print('=======================');
  print('Original list: $originalList');
  // Muestra la primera operación y su resultado
  // Muestra la segunda operación y el resultado final
  print('Processing completed successfully');
}

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de Dart online