Menu
Coddy logo textTech

和集合と積集合

CoddyのSwiftジャーニー「ロジックとフロー」セクションの一部 — レッスン 19/56。

2つのコレクションが関わる要素の所属(メンバーシップ)に関する問い合わせを行う際、Setは真価を発揮します。

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

チャレンジ

簡単

2行の入力を読み込みます。各行はカンマ区切りの整数のリストです。

これらを集合 ab として扱います。次の2行を出力してください:

  1. 積集合(共通部分)。昇順にソートし、, で連結します(空の場合は空行を出力)。
  2. 和集合。昇順にソートし、, で連結します。

1行目の入力が 1,2,3,4 で、2行目の入力が 3,4,5,6 の場合、出力は以下のようになります:

3,4
1,2,3,4,5,6

チートシート

Swiftにおける集合(Set)の操作:

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: 積集合をソートして結合、和集合をソートして結合
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン