Powtórzenie – przetwarzanie listy
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 50 z 65.
Wyzwanie
ŁatwyUtwórz elastyczny system przetwarzania danych, który demonstruje funkcje wyższego rzędu poprzez zbudowanie konfigurowalnego procesora list. Twój program utworzy różne funkcje przetwarzające i użyje głównej funkcji przetwarzającej, która może zastosować dowolną operację do listy danych.
- Wczytaj ciąg znaków zawierający liczby oddzielone przecinkami (np.
"10,20,30,40") - Wczytaj ciąg znaków określający typ pierwszej operacji (
"multiply","add"lub"subtract") - Wczytaj ciąg znaków określający wartość używaną przy pierwszej operacji (np.
"3") - Wczytaj ciąg znaków określający typ drugiej operacji (
"multiply","add"lub"subtract") - Wczytaj ciąg znaków określający wartość używaną przy drugiej operacji (np.
"5") - Podziel pierwsze wejście na pojedyncze liczby i zamień każdą z nich na liczbę całkowitą
- Utwórz trzy funkcje wykonujące operacje:
multiplyBy— przyjmuje dwie liczby całkowite i zwraca pierwszą pomnożoną przez drugąaddTo— przyjmuje dwie liczby całkowite i zwraca ich sumęsubtractFrom— przyjmuje dwie liczby całkowite i zwraca różnicę pierwszej i drugiej- Utwórz główną funkcję o nazwie
processListWithOperation, która przyjmuje trzy parametry: - Listę liczb całkowitych
- Funkcję, która przyjmuje dwie liczby całkowite i zwraca liczbę całkowitą
- Wartość całkowitą używaną przy operacji
- Funkcja
processListWithOperationpowinna zastosować podaną funkcję do każdej liczby z listy, używając podanej wartości, i zwrócić nową listę z wynikami - Zastosuj pierwszą operację do pierwotnej listy, a następnie zastosuj drugą operację do wyniku pierwszej operacji
- Wyświetl wyniki w dokładnie takim formacie, jak pokazano poniżej
Na przykład, jeśli dane wejściowe to "2,4,6", "multiply", "3", "add" i "10", twój program powinien wyświetlić:
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 successfullyJeśli dane wejściowe to "15,25,35", "subtract", "5", "multiply" i "2", twój program powinien wyświetlić:
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 successfullyTwój program musi demonstrować funkcje wyższego rzędu, przekazując do processListWithOperation odpowiednią funkcję wykonującą operację, zależnie od danych wejściowych określających typ operacji. Użyj instrukcji warunkowych, aby ustalić, którą funkcję przekazać dla każdej operacji. Funkcja processListWithOperation powinna przejść przez listę wejściową, zastosować do każdego elementu podaną funkcję z użyciem podanej wartości i zebrać wyniki w nowej liście. Zastosuj operacje kolejno, używając wyniku pierwszej operacji jako wejścia dla drugiej.
Spróbuj swoich sił
import 'dart:io';
void main() {
// Wczytaj dane wejściowe
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// Przekształć tekst wejściowy w listę liczb całkowitych
List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
int firstOpValue = int.parse(firstValue!);
int secondOpValue = int.parse(secondValue!);
// TODO: Napisz swój kod poniżej
// Utwórz trzy funkcje operacji: multiplyBy, addTo, subtractFrom
// Utwórz funkcję processListWithOperation
// Wykonaj operacje po kolei i zapisz wyniki
// Wyświetl wyniki w wymaganym formacie
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// Wyświetl pierwszą operację i jej wynik
// Wyświetl drugą operację i wynik końcowy
print('Processing completed successfully');
}Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego7Zaawansowane funkcje
Funkcje anonimowePrzekazywanie funkcji jako argumentówZrozumienie domknięćWprowadzenie do rekurencjiFunkcja rekurencyjna: odliczanieFunkcja rekurencyjna: silniaPowtórzenie – przetwarzanie listy2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gościPoćwicz samodzielnie: Kompilator Dart online