Menu
CoddyTech

Итоги — Обработчик списков

Часть раздела Логика и управление потоком путешествия по Dart на Coddy. Урок 50 из 65.

challenge icon

Задание

Легко

Создайте гибкую систему обработки данных, демонстрирующую функции высшего порядка: разработайте настраиваемый обработчик списков. Ваша программа будет создавать различные функции обработки и использовать главную функцию-обработчик, которая может применять к списку данных любую операцию.

  1. Считайте строку с числами, разделёнными запятыми (например, "10,20,30,40")
  2. Считайте строку, задающую тип первой операции ("multiply", "add" или "subtract")
  3. Считайте строку со значением, которое нужно использовать в первой операции (например, "3")
  4. Считайте строку, задающую тип второй операции ("multiply", "add" или "subtract")
  5. Считайте строку со значением, которое нужно использовать во второй операции (например, "5")
  6. Разделите первый ввод на отдельные числа и преобразуйте каждое в целое число
  7. Создайте три функции операций:
    • multiplyBy — принимает два целых числа и возвращает произведение первого на второе
    • addTo — принимает два целых числа и возвращает сумму первого и второго
    • subtractFrom — принимает два целых числа и возвращает разность первого и второго
  8. Создайте главную функцию под названием processListWithOperation, которая принимает три параметра:
    • Список целых чисел
    • Функцию, которая принимает два целых числа и возвращает целое число
    • Целое число, которое нужно использовать при выполнении операции
  9. Функция processListWithOperation должна применять заданную функцию к каждому числу в списке, используя переданное значение, и возвращать новый список с результатами
  10. Примените первую операцию к исходному списку, а затем примените вторую операцию к результату первой
  11. Выведите результаты в точном формате, показанном ниже

Например, если входные данные — "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');
}

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор Dart