Menu
Coddy logo textTech

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

Часть раздела Логика и управление потоком путешествия по 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');
}

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