Ripasso - elaboratore di liste
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 50 di 65.
Sfida
FacileCrea un sistema flessibile di elaborazione dei dati che dimostri le funzioni di ordine superiore creando un elaboratore di liste personalizzabile. Il tuo programma creerà diverse funzioni di elaborazione e userà una funzione principale di elaborazione in grado di applicare qualsiasi operazione a una lista di dati.
- Leggi una stringa contenente numeri separati da virgole (ad es.,
"10,20,30,40") - Leggi una stringa che rappresenta il tipo della prima operazione (
"multiply","add"oppure"subtract") - Leggi una stringa che rappresenta il valore da usare con la prima operazione (ad es.,
"3") - Leggi una stringa che rappresenta il tipo della seconda operazione (
"multiply","add"oppure"subtract") - Leggi una stringa che rappresenta il valore da usare con la seconda operazione (ad es.,
"5") - Suddividi il primo input in numeri singoli e converti ciascuno in un intero
- Crea tre funzioni per le operazioni:
multiplyBy- accetta due interi e restituisce il primo moltiplicato per il secondoaddTo- accetta due interi e restituisce la somma del primo e del secondosubtractFrom- accetta due interi e restituisce il primo meno il secondo- Crea una funzione principale chiamata
processListWithOperationche accetta tre parametri: - Una lista di interi
- Una funzione che accetta due interi e restituisce un intero
- Un valore intero da usare con l’operazione
- La funzione
processListWithOperationdeve applicare la funzione fornita a ciascun numero della lista usando il valore specificato e restituire una nuova lista con i risultati - Applica la prima operazione alla lista originale, poi applica la seconda operazione al risultato della prima
- Visualizza i risultati nel formato esatto mostrato di seguito
Ad esempio, se gli input sono "2,4,6", "multiply", "3", "add" e "10", il programma dovrebbe produrre:
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 successfullySe gli input sono "15,25,35", "subtract", "5", "multiply" e "2", il programma dovrebbe produrre:
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 successfullyIl programma deve dimostrare le funzioni di ordine superiore passando la funzione operativa appropriata a processListWithOperation in base agli input che specificano il tipo di operazione. Usa istruzioni condizionali per determinare quale funzione passare per ciascuna operazione. La funzione processListWithOperation deve scorrere la lista di input, applicare a ciascun elemento la funzione fornita con il valore specificato e raccogliere i risultati in una nuova lista. Applica le operazioni in sequenza, usando il risultato della prima operazione come input per la seconda.
Provalo tu
import 'dart:io';
void main() {
// Leggi gli input
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// Converti la stringa di input in una lista di interi
List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
int firstOpValue = int.parse(firstValue!);
int secondOpValue = int.parse(secondValue!);
// TODO: Scrivi il tuo codice qui sotto
// Crea le tre funzioni per le operazioni: multiplyBy, addTo, subtractFrom
// Crea la funzione processListWithOperation
// Applica le operazioni in sequenza e memorizza i risultati
// Visualizza i risultati nel formato richiesto
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// Visualizza la prima operazione e il risultato
// Visualizza la seconda operazione e il risultato finale
print('Processing completed successfully');
}Tutte le lezioni di Logica e flusso
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario7Funzioni avanzate
Funzioni anonimePassare funzioni come argomentiComprendere le closureIntroduzione alla ricorsioneFunzione ricorsiva: conto alla rovesciaFunzione ricorsiva: fattorialeRipasso - elaboratore di liste2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online