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 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.
- Lee una entrada de cadena que contenga números separados por comas (por ejemplo,
"10,20,30,40") - Lee una entrada de cadena que represente el primer tipo de operación (
"multiply","add", o"subtract") - Lee una entrada de cadena que represente el valor a utilizar con la primera operación (por ejemplo,
"3") - Lee una entrada de cadena que represente el segundo tipo de operación (
"multiply","add", o"subtract") - Lee una entrada de cadena que represente el valor a utilizar con la segunda operación (por ejemplo,
"5") - Divide la primera entrada en números individuales y convierte cada uno en un entero
- Crea tres funciones de operación:
multiplyBy- toma dos enteros y devuelve el primero multiplicado por el segundoaddTo- toma dos enteros y devuelve el primero más el segundosubtractFrom- toma dos enteros y devuelve el primero menos el segundo- Crea una función principal llamada
processListWithOperationque 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
- La función
processListWithOperationdebe aplicar la función dada 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, luego aplica la segunda operación al resultado de la primera operación
- 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 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 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
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 única