Podsumowanie — unikalna lista gości
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 25 z 65.
Wyzwanie
ŁatwyUtwórz program, który zarządza systemem planowania wydarzeń, analizując listy gości pochodzące z dwóch różnych źródeł zaproszeń. Twój program powinien:
- Odczytać dane wejściowe w postaci ciągu znaków reprezentującego nazwę wydarzenia
- Odczytywać wiele ciągów znaków reprezentujących gości z pierwszej listy zaproszeń (wprowadzanie danych zakończy się po otrzymaniu
"list1_done") - Odczytywać wiele ciągów znaków reprezentujących gości z drugiej listy zaproszeń (wprowadzanie danych zakończy się po otrzymaniu
"list2_done") - Przekształcić obie listy gości w zbiory, aby automatycznie obsłużyć ewentualne duplikaty na każdej liście
- Użyć metody
union(), aby znaleźć wszystkich unikalnych gości zaproszonych na wydarzenie - Użyć metody
intersection(), aby znaleźć gości występujących na obu listach zaproszeń - Użyć metody
difference(), aby znaleźć gości znajdujących się tylko na pierwszej liście zaproszeń - Wypisać analizę listy gości w dokładnie takim formacie, jak pokazano poniżej
Na przykład, jeśli nazwa wydarzenia to "Birthday Party", pierwsza lista zawiera "Alice", "Bob", "Charlie", "Diana", a druga lista zawiera "Bob", "Diana", "Eve", "Frank", program powinien wypisać:
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 completedJeśli nazwa wydarzenia to "Wedding Reception", pierwsza lista zawiera "John", "Mary", "Sarah", a druga lista zawiera "Tom", "Lisa", "Mike", program powinien wypisać:
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 completedJeśli nazwa wydarzenia to "Company Meeting", pierwsza lista zawiera "Alex", "Jordan", "Taylor", "Morgan", "Alex", a druga lista zawiera "Jordan", "Taylor", "Casey", "Jordan", program powinien wypisać:
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 completedTwój program musi zademonstrować wszystkie trzy operacje na zbiorach: union(), aby połączyć wszystkich gości, intersection(), aby znaleźć gości występujących na obu listach, oraz difference(), aby znaleźć gości występujących wyłącznie na pierwszej liście. Najpierw przekształć listy wejściowe w zbiory, aby obsłużyć ewentualne duplikaty na poszczególnych listach, a następnie wykonaj operacje na zbiorach, aby przeanalizować rozkład gości.
Spróbuj swoich sił
import 'dart:io';
void main() {
// Wczytaj nazwę wydarzenia
String? eventName = stdin.readLineSync();
// Wczytaj pierwszą listę zaproszonych
List<String> firstList = [];
String? input;
while ((input = stdin.readLineSync()) != "list1_done") {
if (input != null) {
firstList.add(input);
}
}
// Wczytaj drugą listę zaproszonych
List<String> secondList = [];
while ((input = stdin.readLineSync()) != "list2_done") {
if (input != null) {
secondList.add(input);
}
}
// Przekształć listy w zbiory
Set<String> firstSet = firstList.toSet();
Set<String> secondSet = secondList.toSet();
// TODO: Napisz swój kod poniżej
// Użyj metod union(), intersection() i difference(), aby przeanalizować listy zaproszonych
// Oblicz liczbę wszystkich unikalnych gości, gości znajdujących się na obu listach oraz gości znajdujących się tylko na pierwszej liście
// Wyświetl wyniki w wymaganym formacie
print("Event: $eventName");
print("First invitation list: $firstSet");
print("Second invitation list: $secondSet");
// Dodaj tutaj pozostałe instrukcje wyświetlające wyniki
}Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gościPoćwicz samodzielnie: Kompilator Dart online