Итоги — Обработчик списков
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 50 из 65.
Задание
ЛегкоСоздайте гибкую систему обработки данных, которая демонстрирует функции высшего порядка, путем создания настраиваемого процессора списков. Ваша программа будет создавать различные функции обработки и использовать основную функцию процессора, которая может применять любую операцию к списку данных.
- Прочитайте строковый ввод, содержащий числа, разделенные запятыми (например,
"10,20,30,40") - Прочитайте строковый ввод, представляющий тип первой операции (
"multiply","add"или"subtract") - Прочитайте строковый ввод, представляющий значение для использования в первой операции (например,
"3") - Прочитайте строковый ввод, представляющий тип второй операции (
"multiply","add"или"subtract") - Прочитайте строковый ввод, представляющий значение для использования во второй операции (например,
"5") - Разделите первый ввод на отдельные числа и преобразуйте каждое в целое число
- Создайте три функции операций:
multiplyBy- принимает два целых числа и возвращает первое, умноженное на второеaddTo- принимает два целых числа и возвращает сумму первого и второгоsubtractFrom- принимает два целых числа и возвращает разность первого и второго- Создайте основную функцию с именем
processListWithOperation, которая принимает три параметра: - Список целых чисел
- Функцию, которая принимает два целых числа и возвращает целое число
- Целочисленное значение для использования в операции
- Функция
processListWithOperationдолжна применять заданную функцию к каждому числу в списке, используя предоставленное значение, и возвращать новый список с результатами - Примените первую операцию к исходному списку, затем примените вторую операцию к результату первой операции
- Выведите результаты в точном формате, показанном ниже
Например, если входные данные: "2,4,6", "multiply", "3", "add" и "10", ваша программа должна вывести:
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 successfullyЕсли входные данные: "15,25,35", "subtract", "5", "multiply" и "2", ваша программа должна вывести:
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 successfullyВаша программа должна демонстрировать функции высшего порядка, передавая соответствующую функцию операции в processListWithOperation на основе входных данных о типе операции. Используйте условные операторы, чтобы определить, какую функцию передавать для каждой операции. Функция processListWithOperation должна перебирать входной список, применять заданную функцию с предоставленным значением к каждому элементу и собирать результаты в новый список. Применяйте операции последовательно, используя результат первой операции в качестве входных данных для второй операции.
Попробуйте сами
import 'dart:io';
void main() {
// Чтение входных данных
String? numbersInput = stdin.readLineSync();
String? firstOperation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondOperation = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// Преобразование строкового ввода в список целых чисел
List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
int firstOpValue = int.parse(firstValue!);
int secondOpValue = int.parse(secondValue!);
// TODO: Напишите ваш код ниже
// Создайте три функции операций: multiplyBy, addTo, subtractFrom
// Создайте функцию processListWithOperation
// Примените операции последовательно и сохраните результаты
// Вывод результатов в требуемом формате
print('Advanced List Processor');
print('=======================');
print('Original list: $originalList');
// Вывод первой операции и результата
// Вывод второй операции и окончательного результата
print('Processing completed successfully');
}Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря7Продвинутые функции
Анонимные функцииПередача функций в качестве аргументовПонимание замыканийВведение в рекурсиюРекурсивная функция: обратный отсчётРекурсивная функция: факториалИтоги — Обработчик списков2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей