Объединение и пересечение
Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 19 из 56.
Множества проявляют себя наилучшим образом, когда вы задаете вопросы о принадлежности элементов, затрагивающие две коллекции.
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5, 6]union возвращает каждый элемент из обеих сторон:
a.union(b) // {1, 2, 3, 4, 5, 6}intersection возвращает только те элементы, которые присутствуют в обоих:
a.intersection(b) // {3, 4}Каждый метод возвращает новый Set. Исходные множества остаются без изменений. Порядок итерации по результату не гарантируется, выполните сортировку перед выводом.
Задание
ЛегкоПрочитайте две строки ввода. Каждая из них представляет собой список целых чисел, разделенных запятыми.
Рассматривайте их как множества a и b. Выведите две строки:
- Пересечение, отсортированное по возрастанию, объединенное через
,(или пустая строка, если оно пустое) - Объединение, отсортированное по возрастанию, объединенное через
,
Для ввода 1,2,3,4 в первой строке и 3,4,5,6 во второй, вывод будет следующим:
3,4
1,2,3,4,5,6Шпаргалка
Операции над множествами в Swift:
let a: Set = [1, 2, 3, 4]
let b: Set = [3, 4, 5, 6]
a.union(b) // {1, 2, 3, 4, 5, 6} - элементы из обоих множеств
a.intersection(b) // {3, 4} - элементы, присутствующие в обоих множествахОба метода возвращают новое Set; оригиналы остаются без изменений. Выполните сортировку перед выводом на печать, так как порядок итерации не гарантируется.
Попробуйте сами
let a = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })
let b = Set(readLine()!.components(separatedBy: ",").map { Int($0)! })
// TODO: intersection sorted joined, union sorted joined
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря