Menu
Coddy logo textTech

Объединение и пересечение

Часть раздела Логика и управление потоком путешествия по 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. Исходные множества остаются без изменений. Порядок итерации по результату не гарантируется, выполните сортировку перед выводом.

challenge icon

Задание

Легко

Прочитайте две строки ввода. Каждая из них представляет собой список целых чисел, разделенных запятыми.

Рассматривайте их как множества a и b. Выведите две строки:

  1. Пересечение, отсортированное по возрастанию, объединенное через , (или пустая строка, если оно пустое)
  2. Объединение, отсортированное по возрастанию, объединенное через ,

Для ввода 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
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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