Menu
Coddy logo textTech

Ripasso - elaboratore di liste

Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 50 di 65.

challenge icon

Sfida

Facile

Crea un sistema flessibile di elaborazione dei dati che dimostri le funzioni di ordine superiore creando un elaboratore di liste personalizzabile. Il tuo programma creerà diverse funzioni di elaborazione e userà una funzione principale di elaborazione in grado di applicare qualsiasi operazione a una lista di dati.

  1. Leggi una stringa contenente numeri separati da virgole (ad es., "10,20,30,40")
  2. Leggi una stringa che rappresenta il tipo della prima operazione ("multiply", "add" oppure "subtract")
  3. Leggi una stringa che rappresenta il valore da usare con la prima operazione (ad es., "3")
  4. Leggi una stringa che rappresenta il tipo della seconda operazione ("multiply", "add" oppure "subtract")
  5. Leggi una stringa che rappresenta il valore da usare con la seconda operazione (ad es., "5")
  6. Suddividi il primo input in numeri singoli e converti ciascuno in un intero
  7. Crea tre funzioni per le operazioni:
    • multiplyBy - accetta due interi e restituisce il primo moltiplicato per il secondo
    • addTo - accetta due interi e restituisce la somma del primo e del secondo
    • subtractFrom - accetta due interi e restituisce il primo meno il secondo
  8. Crea una funzione principale chiamata processListWithOperation che accetta tre parametri:
    • Una lista di interi
    • Una funzione che accetta due interi e restituisce un intero
    • Un valore intero da usare con l’operazione
  9. La funzione processListWithOperation deve applicare la funzione fornita a ciascun numero della lista usando il valore specificato e restituire una nuova lista con i risultati
  10. Applica la prima operazione alla lista originale, poi applica la seconda operazione al risultato della prima
  11. Visualizza i risultati nel formato esatto mostrato di seguito

Ad esempio, se gli input sono "2,4,6", "multiply", "3", "add" e "10", il programma dovrebbe produrre:

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 gli input sono "15,25,35", "subtract", "5", "multiply" e "2", il programma dovrebbe produrre:

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

Il programma deve dimostrare le funzioni di ordine superiore passando la funzione operativa appropriata a processListWithOperation in base agli input che specificano il tipo di operazione. Usa istruzioni condizionali per determinare quale funzione passare per ciascuna operazione. La funzione processListWithOperation deve scorrere la lista di input, applicare a ciascun elemento la funzione fornita con il valore specificato e raccogliere i risultati in una nuova lista. Applica le operazioni in sequenza, usando il risultato della prima operazione come input per la seconda.

Provalo tu

import 'dart:io';

void main() {
  // Leggi gli input
  String? numbersInput = stdin.readLineSync();
  String? firstOperation = stdin.readLineSync();
  String? firstValue = stdin.readLineSync();
  String? secondOperation = stdin.readLineSync();
  String? secondValue = stdin.readLineSync();
  
  // Converti la stringa di input in una lista di interi
  List<int> originalList = numbersInput!.split(',').map((e) => int.parse(e.trim())).toList();
  int firstOpValue = int.parse(firstValue!);
  int secondOpValue = int.parse(secondValue!);
  
  // TODO: Scrivi il tuo codice qui sotto
  // Crea le tre funzioni per le operazioni: multiplyBy, addTo, subtractFrom
  // Crea la funzione processListWithOperation
  // Applica le operazioni in sequenza e memorizza i risultati
  
  // Visualizza i risultati nel formato richiesto
  print('Advanced List Processor');
  print('=======================');
  print('Original list: $originalList');
  // Visualizza la prima operazione e il risultato
  // Visualizza la seconda operazione e il risultato finale
  print('Processing completed successfully');
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Dart online