Récapitulatif - List Processor
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 50 sur 65.
Défi
FacileCréez un système de traitement de données flexible qui illustre les fonctions d'ordre supérieur en construisant un processeur de liste personnalisable. Votre programme créera différentes fonctions de traitement et utilisera une fonction de traitement principale capable d'appliquer n'importe quelle opération à une liste de données.
- Lisez une chaîne de caractères en entrée contenant des nombres séparés par des virgules (par exemple,
"10,20,30,40") - Lisez une chaîne de caractères représentant le premier type d'opération (
"multiply","add", ou"subtract") - Lisez une chaîne de caractères représentant la valeur à utiliser avec la première opération (par exemple,
"3") - Lisez une chaîne de caractères représentant le deuxième type d'opération (
"multiply","add", ou"subtract") - Lisez une chaîne de caractères représentant la valeur à utiliser avec la deuxième opération (par exemple,
"5") - Séparez la première entrée en nombres individuels et convertissez chacun en un entier
- Créez trois fonctions d'opération :
multiplyBy- prend deux entiers et retourne le premier multiplié par le secondaddTo- prend deux entiers et retourne le premier plus le secondsubtractFrom- prend deux entiers et retourne le premier moins le second- Créez une fonction principale appelée
processListWithOperationqui prend trois paramètres : - Une liste d'entiers
- Une fonction qui prend deux entiers et retourne un entier
- Une valeur entière à utiliser avec l'opération
- La fonction
processListWithOperationdoit appliquer la fonction donnée à chaque nombre de la liste en utilisant la valeur fournie et retourner une nouvelle liste avec les résultats - Appliquez la première opération à la liste originale, puis appliquez la deuxième opération au résultat de la première opération
- Affichez les résultats dans le format exact indiqué ci-dessous
Par exemple, si les entrées sont "2,4,6", "multiply", "3", "add", et "10", votre programme doit afficher :
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 les entrées sont "15,25,35", "subtract", "5", "multiply", et "2", votre programme doit afficher :
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 successfullyVotre programme doit démontrer l'utilisation de fonctions d'ordre supérieur en passant la fonction d'opération appropriée à processListWithOperation en fonction des types d'opération saisis. Utilisez des instructions conditionnelles pour déterminer quelle fonction passer pour chaque opération. La fonction processListWithOperation doit parcourir la liste d'entrée, appliquer la fonction donnée avec la valeur fournie à chaque élément, et collecter les résultats dans une nouvelle liste. Appliquez les opérations de manière séquentielle, en utilisant le résultat de la première opération comme entrée pour la seconde opération.
Essayez vous-même
import 'dart:io';
void main() {
// Lire les entrées
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// Convertir l'entrée de chaîne en une liste d'entiers
List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
int firstOpValue = int.parse(firstValue!);
int secondOpValue = int.parse(secondValue!);
// TODO: Écrivez votre code ci-dessous
// Créer les trois fonctions d'opération : multiplyBy, addTo, subtractFrom
// Créer la fonction processListWithOperation
// Appliquer les opérations séquentiellement et stocker les résultats
// Afficher les résultats dans le format requis
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// Afficher la première opération et le résultat
// Afficher la deuxième opération et le résultat final
print('Processing completed successfully');
}Toutes les leçons de Logique & Flux
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire7Fonctions avancées
Fonctions anonymesPassage de fonctions en argumentsComprendre les closuresIntroduction à la récursivitéFonction récursive : Compte à reboursFonction récursive : FactorielleRécapitulatif - List Processor2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques