Resumen - Procesador de listas
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy. Lección 50 de 65.
Desafío
FácilCrea 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.
- Lee una entrada de cadena que contenga números separados por comas (p. ej.,
"10,20,30,40") - Lee una entrada de cadena que represente el tipo de la primera operación (
"multiply","add"o"subtract") - Lee una entrada de cadena que represente el valor que se usará con la primera operación (p. ej.,
"3") - Lee una entrada de cadena que represente el tipo de la segunda operación (
"multiply","add"o"subtract") - Lee una entrada de cadena que represente el valor que se usará con la segunda operación (p. ej.,
"5") - Divide la primera entrada en números individuales y convierte cada uno en un entero
- Crea tres funciones de operación:
multiplyBy: recibe dos enteros y devuelve el primero multiplicado por el segundoaddTo: recibe dos enteros y devuelve la suma del primero y el segundosubtractFrom: recibe dos enteros y devuelve el primero menos el segundo- Crea una función principal llamada
processListWithOperationque 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
- La función
processListWithOperationdebe aplicar la función indicada a cada número de la lista utilizando el valor proporcionado y devolver una nueva lista con los resultados - Aplica la primera operación a la lista original y, después, aplica la segunda operación al resultado de la primera
- 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 successfullySi 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 successfullyTu 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
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario7Funciones avanzadas
Funciones anónimasPasar funciones como argumentosEntendiendo los ClosuresIntroducción a la recursividadFunción recursiva: Cuenta regresivaFunción recursiva: FactorialResumen - Procesador de listas2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados únicaPractica por tu cuenta: Compilador de Dart online