Итоги: уникальный список гостей
Часть раздела Логика и управление потоком путешествия по 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Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостейПотренируйтесь самостоятельно: Онлайн-компилятор Dart