Итоги: уникальный список гостей
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 25 из 65.
Задание
ЛегкоСоздайте программу для управления системой планирования мероприятий путем анализа списков гостей из двух разных источников приглашений. Ваша программа должна:
- Считать строковый ввод, представляющий название мероприятия
- Считать несколько строковых вводов, представляющих гостей из первого списка приглашений (ввод закончится, когда вы получите
"list1_done") - Считать несколько строковых вводов, представляющих гостей из второго списка приглашений (ввод закончится, когда вы получите
"list2_done") - Преобразовать оба списка гостей в объекты Set (множества), чтобы автоматически обработать любые дубликаты внутри каждого списка
- Использовать метод
union(), чтобы найти всех уникальных гостей, приглашенных на мероприятие - Использовать метод
intersection(), чтобы найти гостей, которые присутствуют в обоих списках приглашений - Использовать метод
difference(), чтобы найти гостей, которые есть только в первом списке приглашений - Вывести анализ списка гостей в точном формате, показанном ниже
Например, если название мероприятия — "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");
// Добавьте остальные операторы вывода здесь
}Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей