Riepilogo - Lista degli ospiti unici
Fa parte della sezione Logica e flusso del percorso Dart di Coddy. Lezione 25 di 65.
Sfida
FacileCrea 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à:
- Leggere una stringa in input che rappresenta il nome dell’evento
- Leggere più stringhe in input che rappresentano gli invitati della prima lista di inviti (l’input terminerà quando riceverai
"list1_done") - Leggere più stringhe in input che rappresentano gli invitati della seconda lista di inviti (l’input terminerà quando riceverai
"list2_done") - Convertire entrambe le liste degli invitati in insiemi per gestire automaticamente eventuali duplicati all’interno di ciascuna lista
- Usare il metodo
union()per trovare tutti gli invitati distinti all’evento - Usare il metodo
intersection()per trovare gli invitati presenti in entrambe le liste - Usare il metodo
difference()per trovare gli invitati presenti solo nella prima lista - 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 completedSe 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 completedSe 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 completedIl 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
1Manipolazione avanzata delle liste
Proprietà delle liste: primo e ultimoStato della lista: isEmpty e isNotEmpInvertire una listaAggiungere a una lista: insertRimozione dalla lista: removeWhereRicerca in una lista: indexOfOrdinare una listaMescolare una listaRiepilogo - Organizzatore di liste4Manipolazione avanzata delle mappe
Iterare su una mappaVerificare chiavi e valoriProprietà delle mappe: chiavi e valoriAggiunta condizionale: putIfAbsentRimuovere elementi da una mappaMappe annidateRiepilogo - Aggiornamento dell'inventario2Operazioni funzionali sulle liste
Trasformare con 'map'Filtrare con 'where'Usare '.toList()'Verificare condizioni con 'any'Condizioni con 'every'Trovare con 'firstWhere'Riepilogo - Filtraggio dei dati3Insiemi
Che cos'è un insieme?Creare un insiemeAggiungere e rimuovere elementi dagli insiemiVerificare la presenza di elementi in un insiemeConvertire una lista in un insiemeUnione di insiemiIntersezione di insiemiDifferenza tra insiemiRiepilogo - Lista degli ospiti uniciEsercitati da solo: Compilatore Dart online