Menu
Coddy logo textTech

Riepilogo - Lista degli ospiti unici

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

challenge icon

Sfida

Facile

Crea un programma che gestisca un sistema di pianificazione di eventi analizzando le liste degli invitati provenienti da due diverse fonti di inviti. Il tuo programma dovrà:

  1. Leggere una stringa in input che rappresenta il nome dell’evento
  2. Leggere più stringhe in input che rappresentano gli invitati della prima lista di inviti (l’input terminerà quando riceverai "list1_done")
  3. Leggere più stringhe in input che rappresentano gli invitati della seconda lista di inviti (l’input terminerà quando riceverai "list2_done")
  4. Convertire entrambe le liste degli invitati in insiemi per gestire automaticamente eventuali duplicati all’interno di ciascuna lista
  5. Usare il metodo union() per trovare tutti gli invitati distinti all’evento
  6. Usare il metodo intersection() per trovare gli invitati presenti in entrambe le liste
  7. Usare il metodo difference() per trovare gli invitati presenti solo nella prima lista
  8. Stampare l’analisi della lista degli invitati nel formato esatto mostrato di seguito

Per esempio, se il nome dell’evento è "Birthday Party", la prima lista contiene "Alice", "Bob", "Charlie", "Diana" e la seconda lista contiene "Bob", "Diana", "Eve", "Frank", il tuo programma dovrebbe produrre questo output:

Event: Birthday Party
First invitation list: {Alice, Bob, Charlie, Diana}
Second invitation list: {Bob, Diana, Eve, Frank}
All unique guests: {Alice, Bob, Charlie, Diana, Eve, Frank}
Guests on both lists: {Bob, Diana}
Guests only on first list: {Alice, Charlie}
Total unique guests: 6
Duplicate invitations: 2
First list only: 2
Status: Guest list analysis completed

Se il nome dell’evento è "Wedding Reception", la prima lista contiene "John", "Mary", "Sarah" e la seconda lista contiene "Tom", "Lisa", "Mike", il tuo programma dovrebbe produrre questo output:

Event: Wedding Reception
First invitation list: {John, Mary, Sarah}
Second invitation list: {Tom, Lisa, Mike}
All unique guests: {John, Mary, Sarah, Tom, Lisa, Mike}
Guests on both lists: {}
Guests only on first list: {John, Mary, Sarah}
Total unique guests: 6
Duplicate invitations: 0
First list only: 3
Status: Guest list analysis completed

Se il nome dell’evento è "Company Meeting", la prima lista contiene "Alex", "Jordan", "Taylor", "Morgan", "Alex" e la seconda lista contiene "Jordan", "Taylor", "Casey", "Jordan", il tuo programma dovrebbe produrre questo output:

Event: Company Meeting
First invitation list: {Alex, Jordan, Taylor, Morgan}
Second invitation list: {Jordan, Taylor, Casey}
All unique guests: {Alex, Jordan, Taylor, Morgan, Casey}
Guests on both lists: {Jordan, Taylor}
Guests only on first list: {Alex, Morgan}
Total unique guests: 5
Duplicate invitations: 2
First list only: 2
Status: Guest list analysis completed

Il tuo programma deve dimostrare tutte e tre le operazioni sugli insiemi: union() per riunire tutti gli invitati, intersection() per trovare gli invitati presenti in entrambe le liste e difference() per trovare gli invitati presenti solo nella prima lista. Converti prima le liste di input in insiemi per gestire eventuali duplicati all’interno delle singole liste, poi esegui le operazioni sugli insiemi per analizzare la distribuzione degli invitati.

Provalo tu

import 'dart:io';

void main() {
  // Leggi il nome dell'evento
  String? eventName = stdin.readLineSync();
  
  // Leggi la prima lista degli invitati
  List<String> firstList = [];
  String? input;
  while ((input = stdin.readLineSync()) != "list1_done") {
    if (input != null) {
      firstList.add(input);
    }
  }
  
  // Leggi la seconda lista degli invitati
  List<String> secondList = [];
  while ((input = stdin.readLineSync()) != "list2_done") {
    if (input != null) {
      secondList.add(input);
    }
  }
  
  // Converti le liste in insiemi
  Set<String> firstSet = firstList.toSet();
  Set<String> secondSet = secondList.toSet();
  
  // TODO: Scrivi il tuo codice qui sotto
  // Usa i metodi union(), intersection() e difference() per analizzare le liste degli invitati
  // Calcola tutti gli invitati distinti, quelli presenti in entrambe le liste e quelli presenti solo nella prima lista
  
  // Stampa i risultati nel formato richiesto
  print("Event: $eventName");
  print("First invitation list: $firstSet");
  print("Second invitation list: $secondSet");
  // Aggiungi qui le istruzioni di output rimanenti
}

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore Dart online