Menu
Coddy logo textTech

Rangeのメソッド

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

Rangeは本物のCollectionなので、配列で使うのと同じツールボックスが備わっています。

containscountfirst、および last はすべて直接動作します:

let r = 1...10
print(r.contains(5))            // true
print(r.count)                  // 10
print(r.first!, r.last!)        // 1 10

これまで使ってきたほとんどの配列メソッドも同様に動作します。範囲をフィルタリングした結果はそれ自体が範囲ではないため、filter は配列を返します:

let evens = (1...10).filter { $0 % 2 == 0 }
print(evens)                    // [2, 4, 6, 8, 10]

reduceについても同様です。範囲(range)もこれを備えており、素早い合計や積の計算に活用することになるでしょう。

challenge icon

チャレンジ

簡単

2つの整数(2行): ntarget を読み込みます。閉区間 1...n をデータセットとして扱ってください。

以下の3行を出力してください:

  1. target が範囲内に含まれる場合は true、そうでない場合は false
  2. 範囲内のすべての値の積(n!: 階乗)。reduce を使用してください。
  3. 範囲内の値のうち 3 の倍数 であるものを , で連結したもの(該当するものがない場合は空行)。filter を使用してください。

入力が 5 / 3 の場合、出力は以下のようになります:

true
120
3

自分で試してみよう

let n = Int(readLine()!)!
let target = Int(readLine()!)!
let r = 1...n

// TODO: contains(target)、reduceによる積、filterによる3の倍数
quiz icon腕試し

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

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