Rückblick – Einzigartige Gästeliste
Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy. Lektion 25 von 65.
Aufgabe
EinfachErstelle ein Programm, das ein Veranstaltungsplanungssystem verwaltet, indem es Gästelisten aus zwei verschiedenen Einladungsquellen analysiert. Dein Programm sollte:
- Eine Zeichenfolgeeingabe lesen, die den Namen der Veranstaltung darstellt
- Mehrere Zeichenfolgeneingaben lesen, die Gäste aus der ersten Einladungsliste darstellen (die Eingabe endet, wenn du
"list1_done"erhältst) - Mehrere Zeichenfolgeneingaben lesen, die Gäste aus der zweiten Einladungsliste darstellen (die Eingabe endet, wenn du
"list2_done"erhältst) - Beide Gästelisten in Mengen umwandeln, um automatisch mit Duplikaten innerhalb jeder Liste umzugehen
- Die Methode
union()verwenden, um alle eindeutigen zur Veranstaltung eingeladenen Gäste zu ermitteln - Die Methode
intersection()verwenden, um Gäste zu ermitteln, die in beiden Einladungslisten vorkommen - Die Methode
difference()verwenden, um Gäste zu ermitteln, die nur in der ersten Einladungsliste stehen - Die Analyse der Gästelisten im unten exakt gezeigten Format ausgeben
Wenn der Veranstaltungsname beispielsweise "Birthday Party" lautet, die erste Liste "Alice", "Bob", "Charlie", "Diana" enthält und die zweite Liste "Bob", "Diana", "Eve", "Frank" enthält, sollte dein 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 Veranstaltungsname "Wedding Reception" lautet, die erste Liste "John", "Mary", "Sarah" enthält und die zweite Liste "Tom", "Lisa", "Mike" enthält, sollte dein 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 Veranstaltungsname "Company Meeting" lautet, die erste Liste "Alex", "Jordan", "Taylor", "Morgan", "Alex" enthält und die zweite Liste "Jordan", "Taylor", "Casey", "Jordan" enthält, sollte dein 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 completedDein Programm muss alle drei Mengenoperationen demonstrieren: union(), um alle Gäste zusammenzuführen, intersection(), um Gäste zu ermitteln, die in beiden Listen vorkommen, und difference(), um Gäste zu ermitteln, die ausschließlich in der ersten Liste stehen. Wandle die Eingabelisten zuerst in Mengen um, um mit Duplikaten innerhalb einzelner Listen umzugehen, und führe anschließend die Mengenoperationen durch, um die Verteilung der Gäste 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Übe selbstständig: Online-Dart-Compiler