Menu
Coddy logo textTech

Podsumowanie — unikalna lista gości

Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 25 z 65.

challenge icon

Wyzwanie

Łatwy

Utwó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:

  1. Odczytać dane wejściowe w postaci ciągu znaków reprezentującego nazwę wydarzenia
  2. Odczytywać wiele ciągów znaków reprezentujących gości z pierwszej listy zaproszeń (wprowadzanie danych zakończy się po otrzymaniu "list1_done")
  3. Odczytywać wiele ciągów znaków reprezentujących gości z drugiej listy zaproszeń (wprowadzanie danych zakończy się po otrzymaniu "list2_done")
  4. Przekształcić obie listy gości w zbiory, aby automatycznie obsłużyć ewentualne duplikaty na każdej liście
  5. Użyć metody union(), aby znaleźć wszystkich unikalnych gości zaproszonych na wydarzenie
  6. Użyć metody intersection(), aby znaleźć gości występujących na obu listach zaproszeń
  7. Użyć metody difference(), aby znaleźć gości znajdujących się tylko na pierwszej liście zaproszeń
  8. 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 completed

Jeś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 completed

Jeś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 completed

Twó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

Poćwicz samodzielnie: Kompilator Dart online