Menu
CoddyTech

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 por meio da criação de um processador de listas personalizável. Seu programa criará diferentes funções de processamento e usará uma função processadora principal que pode aplicar qualquer operação a uma lista de dados.

  1. Leia uma entrada de texto contendo números separados por vírgulas (por exemplo, "10,20,30,40")
  2. Leia uma entrada de texto que represente o tipo da primeira operação ("multiply", "add" ou "subtract")
  3. Leia uma entrada de texto que represente o valor a ser usado na primeira operação (por exemplo, "3")
  4. Leia uma entrada de texto que represente o tipo da segunda operação ("multiply", "add" ou "subtract")
  5. Leia uma entrada de texto que represente o valor a ser usado na segunda operação (por exemplo, "5")
  6. Divida a primeira entrada em números individuais e converta cada um em 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 a soma do primeiro com o 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 a ser usado na operação
  9. A função processListWithOperation deve aplicar a função fornecida a cada número da 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 exatamente no formato mostrado abaixo

Por exemplo, se as entradas forem "2,4,6", "multiply", "3", "add" e "10", seu programa deverá 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 deverá 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 nos tipos de operação informados. Use instruções condicionais para determinar qual função passar para cada operação. A função processListWithOperation deve percorrer a lista de entrada, aplicar a função fornecida com o valor informado a cada elemento e reunir 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() {
  // Leia as entradas
  String? numbersInput = stdin.readLineSync();
  String? firstOperation = stdin.readLineSync();
  String? firstValue = stdin.readLineSync();
  String? secondOperation = stdin.readLineSync();
  String? secondValue = stdin.readLineSync();
  
  // Converta a entrada de texto em uma lista de números 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
  // Crie as três funções de operação: multiplyBy, addTo, subtractFrom
  // Crie a função processListWithOperation
  // Aplique as operações em sequência e armazene os resultados
  
  // Exiba os resultados no formato exigido
  print('Advanced List Processor');
  print('=======================');
  print('Original list: $originalList');
  // Exiba a primeira operação e o resultado
  // Exiba a segunda operação e o resultado final
  print('Processing completed successfully');
}

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

Pratique por conta própria: Compilador de Dart online