Menu
Coddy logo textTech

Итоги: уникальный список гостей

Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 25 из 65.

challenge icon

Задание

Легко

Создайте программу для управления системой планирования мероприятий путем анализа списков гостей из двух разных источников приглашений. Ваша программа должна:

  1. Считать строковый ввод, представляющий название мероприятия
  2. Считать несколько строковых вводов, представляющих гостей из первого списка приглашений (ввод закончится, когда вы получите "list1_done")
  3. Считать несколько строковых вводов, представляющих гостей из второго списка приглашений (ввод закончится, когда вы получите "list2_done")
  4. Преобразовать оба списка гостей в объекты Set (множества), чтобы автоматически обработать любые дубликаты внутри каждого списка
  5. Использовать метод union(), чтобы найти всех уникальных гостей, приглашенных на мероприятие
  6. Использовать метод intersection(), чтобы найти гостей, которые присутствуют в обоих списках приглашений
  7. Использовать метод difference(), чтобы найти гостей, которые есть только в первом списке приглашений
  8. Вывести анализ списка гостей в точном формате, показанном ниже

Например, если название мероприятия — "Birthday Party", первый список содержит "Alice", "Bob", "Charlie", "Diana", а второй список содержит "Bob", "Diana", "Eve", "Frank", ваша программа должна вывести:

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

Если название мероприятия — "Wedding Reception", первый список содержит "John", "Mary", "Sarah", а второй список содержит "Tom", "Lisa", "Mike", ваша программа должна вывести:

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

Если название мероприятия — "Company Meeting", первый список содержит "Alex", "Jordan", "Taylor", "Morgan", "Alex", а второй список содержит "Jordan", "Taylor", "Casey", "Jordan", ваша программа должна вывести:

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

Ваша программа должна демонстрировать все три операции с множествами: union() для объединения всех гостей, intersection() для поиска гостей, присутствующих в обоих списках, и difference() для поиска гостей, эксклюзивных для первого списка. Сначала преобразуйте входные списки в Set, чтобы обработать любые дубликаты внутри отдельных списков, а затем выполните операции с множествами для анализа распределения гостей.

Попробуйте сами

import 'dart:io';

void main() {
  // Чтение названия мероприятия
  String? eventName = stdin.readLineSync();
  
  // Чтение первого списка приглашений
  List<String> firstList = [];
  String? input;
  while ((input = stdin.readLineSync()) != "list1_done") {
    if (input != null) {
      firstList.add(input);
    }
  }
  
  // Чтение второго списка приглашений
  List<String> secondList = [];
  while ((input = stdin.readLineSync()) != "list2_done") {
    if (input != null) {
      secondList.add(input);
    }
  }
  
  // Преобразование списков в наборы
  Set<String> firstSet = firstList.toSet();
  Set<String> secondSet = secondList.toSet();
  
  // TODO: Напишите свой код ниже
  // Используйте методы union(), intersection() и difference() для анализа списков гостей
  // Вычислите всех уникальных гостей, гостей в обоих списках и гостей только в первом списке
  
  // Вывод результатов в требуемом формате
  print("Event: $eventName");
  print("First invitation list: $firstSet");
  print("Second invitation list: $secondSet");
  // Добавьте остальные операторы вывода здесь
}

Все уроки раздела Логика и управление потоком