Rückblick – Einzigartige Gästeliste
Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy — Lektion 25 von 65.
Aufgabe
EinfachErstellen Sie ein Programm, das ein Event-Planungssystem verwaltet, indem es Gästelisten aus zwei verschiedenen Einladungsquellen analysiert. Ihr Programm sollte:
- Eine String-Eingabe einlesen, die den Eventnamen darstellt
- Mehrere String-Eingaben einlesen, die Gäste aus der ersten Einladungsliste darstellen (die Eingabe endet, wenn Sie
"list1_done"erhalten) - Mehrere String-Eingaben einlesen, die Gäste aus der zweiten Einladungsliste darstellen (die Eingabe endet, wenn Sie
"list2_done"erhalten) - Beide Gästelisten in Sets umwandeln, um Duplikate innerhalb jeder Liste automatisch zu behandeln
- Die Methode
union()verwenden, um alle einzigartigen Gäste zu finden, die zum Event eingeladen wurden - Die Methode
intersection()verwenden, um Gäste zu finden, die auf beiden Einladungslisten stehen - Die Methode
difference()verwenden, um Gäste zu finden, die nur auf der ersten Einladungsliste stehen - Die Gästelisten-Analyse im exakt unten gezeigten Format ausgeben
Wenn der Eventname beispielsweise "Birthday Party" ist, die erste Liste "Alice", "Bob", "Charlie", "Diana" enthält und die zweite Liste "Bob", "Diana", "Eve", "Frank" enthält, sollte Ihr Programm Folgendes ausgeben:
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 completedWenn der Eventname "Wedding Reception" ist, die erste Liste "John", "Mary", "Sarah" enthält und die zweite Liste "Tom", "Lisa", "Mike" enthält, sollte Ihr Programm Folgendes ausgeben:
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 completedWenn der Eventname "Company Meeting" ist, die erste Liste "Alex", "Jordan", "Taylor", "Morgan", "Alex" enthält und die zweite Liste "Jordan", "Taylor", "Casey", "Jordan" enthält, sollte Ihr Programm Folgendes ausgeben:
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 completedIhr Programm muss alle drei Set-Operationen demonstrieren: union() zum Kombinieren aller Gäste, intersection() zum Finden von Gästen, die auf beiden Listen erscheinen, und difference() zum Finden von Gästen, die exklusiv auf der ersten Liste stehen. Wandeln Sie die Eingabelisten zuerst in Sets um, um Duplikate innerhalb einzelner Listen zu behandeln, und führen Sie dann die Set-Operationen durch, um die Gästeverteilung zu analysieren.
Probier es selbst
import 'dart:io';
void main() {
// Veranstaltungsnamen lesen
String? eventName = stdin.readLineSync();
// Erste Einladungsliste lesen
List<String> firstList = [];
String? input;
while ((input = stdin.readLineSync()) != "list1_done") {
if (input != null) {
firstList.add(input);
}
}
// Zweite Einladungsliste lesen
List<String> secondList = [];
while ((input = stdin.readLineSync()) != "list2_done") {
if (input != null) {
secondList.add(input);
}
}
// Listen in Sets umwandeln
Set<String> firstSet = firstList.toSet();
Set<String> secondSet = secondList.toSet();
// TODO: Schreiben Sie Ihren Code unten
// Verwenden Sie die Methoden union(), intersection() und difference(), um die Gästelisten zu analysieren
// Berechnen Sie alle eindeutigen Gäste, Gäste auf beiden Listen und Gäste, die nur auf der ersten Liste stehen
// Die Ergebnisse im erforderlichen Format ausgeben
print("Event: $eventName");
print("First invitation list: $firstSet");
print("Second invitation list: $secondSet");
// Weitere Ausgabeanweisungen hier hinzufügen
}Alle Lektionen in Logik & Ablauf
1Fortgeschrittene Listenmanipulation
Listen-Eigenschaften: first & lastListen-Status: isEmpty & isNotEmptyEine Liste umkehrenHinzufügen zu einer Liste: insertElemente aus Liste entfernen: removeWhereSuchen in einer Liste: indexOfEine Liste sortierenEine Liste mischenZusammenfassung – Listen-Organizer4Fortgeschrittene Map-Manipulation
Über eine Map iterierenPrüfen auf Schlüssel und WerteMap-Eigenschaften: keys & valuesBedingtes Hinzufügen: putIfAbsentEinträge aus einer Map entfernenVerschachtelte MapsRückblick – Inventar-Update7Fortgeschrittene Funktionen
Anonyme FunktionenFunktionen als Argumente übergebenClosures verstehenEinführung in die RekursionRekursive Funktion: CountdownRekursive Funktion: FakultätZusammenfassung – List Processor10Abschluss-Herausforderungen
Herausforderung: NotensortiererHerausforderung: VokalzählerHerausforderung: FizzBuzz2Funktionale Listenoperationen
Transformieren mit 'map'Filtern mit 'where''.toList()' verwendenBedingungen prüfen mit 'any'Bedingungen mit 'every'Suchen mit 'firstWhere'Zusammenfassung – Datenfilterung3Sets
Was ist ein Set?Ein Set erstellenHinzufügen und Entfernen in SetsPrüfen auf Elemente in einem SetEine Liste in ein Set umwandelnSet-VereinigungSet-SchnittmengeSet-DifferenzRückblick – Einzigartige Gästeliste