Menu
Coddy logo textTech

Recapitulação - Processador de Listas

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 50 de 65.

challenge icon

Desafio

Fácil

Crie um sistema flexível de processamento de dados que demonstre funções de ordem superior ao construir um processador de lista personalizável. Seu programa criará diferentes funções de processamento e usará uma função de processador principal que pode aplicar qualquer operação a uma lista de dados.

  1. Leia uma entrada de string contendo números separados por vírgulas (ex: "10,20,30,40")
  2. Leia uma entrada de string representando o primeiro tipo de operação ("multiply", "add", ou "subtract")
  3. Leia uma entrada de string representando o valor a ser usado com a primeira operação (ex: "3")
  4. Leia uma entrada de string representando o segundo tipo de operação ("multiply", "add", ou "subtract")
  5. Leia uma entrada de string representando o valor a ser usado com a segunda operação (ex: "5")
  6. Divida a primeira entrada em números individuais e converta cada um para um inteiro
  7. Crie três funções de operação:
    • multiplyBy - recebe dois inteiros e retorna o primeiro multiplicado pelo segundo
    • addTo - recebe dois inteiros e retorna o primeiro somado ao segundo
    • subtractFrom - recebe dois inteiros e retorna o primeiro menos o segundo
  8. Crie uma função principal chamada processListWithOperation que recebe três parâmetros:
    • Uma lista de inteiros
    • Uma função que recebe dois inteiros e retorna um inteiro
    • Um valor inteiro para usar com a operação
  9. A função processListWithOperation deve aplicar a função fornecida a cada número na lista usando o valor fornecido e retornar uma nova lista com os resultados
  10. Aplique a primeira operação à lista original e, em seguida, aplique a segunda operação ao resultado da primeira operação
  11. Exiba os resultados no formato exato mostrado abaixo

Por exemplo, se as entradas forem "2,4,6", "multiply", "3", "add", e "10", seu programa deve exibir:

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

Se as entradas forem "15,25,35", "subtract", "5", "multiply", e "2", seu programa deve exibir:

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

Seu programa deve demonstrar funções de ordem superior passando a função de operação apropriada para processListWithOperation com base nas entradas de tipo de operação. Use instruções condicionais para determinar qual função passar para cada operação. A função processListWithOperation deve iterar pela lista de entrada, aplicar a função fornecida com o valor fornecido a cada elemento e coletar os resultados em uma nova lista. Aplique as operações sequencialmente, usando o resultado da primeira operação como entrada para a segunda operação.

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler entradas
  String? numbersInput = stdin.readLineSync();
  String? firstOperation = stdin.readLineSync();
  String? firstValue = stdin.readLineSync();
  String? secondOperation = stdin.readLineSync();
  String? secondValue = stdin.readLineSync();
  
  // Converter entrada de string para lista de inteiros
  List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
  int firstOpValue = int.parse(firstValue!);
  int secondOpValue = int.parse(secondValue!);
  
  // TODO: Escreva seu código abaixo
  // Criar as três funções de operação: multiplyBy, addTo, subtractFrom
  // Criar a função processListWithOperation
  // Aplicar as operações sequencialmente e armazenar os resultados
  
  // Exibir os resultados no formato exigido
  print('Advanced List Processor');
  print('=======================');
  print('Original list: $originalList');
  // Imprimir a primeira operação e o resultado
  // Imprimir a segunda operação e o resultado final
  print('Processing completed successfully');
}

Todas as lições de Lógica & Fluxo