ストライド
CoddyのSwiftジャーニー「ロジックとフロー」セクションの一部 — レッスン 8/56。
範囲(range)は一度に1ステップずつ進みます。異なるステップサイズにしたい場合や、カウントダウンしたい場合は、strideを使用します。
2つの形式があります:stride(from:to:by:) は2番目の値の手前で停止し(半開区間)、stride(from:through:by:) はその値を含む可能性があります(閉区間):
for n in stride(from: 0, to: 10, by: 2) {
print(n)
}
// 0, 2, 4, 6, 8for n in stride(from: 10, through: 0, by: -2) {
print(n)
}
// 10, 8, 6, 4, 2, 0by:引数は、カウントアップ(増加)するときは正、カウントダウン(減少)するときは負というように、正しい符号である必要があります。不一致の場合、ループは0回実行されます。
チャレンジ
簡単3つの整数(3行)を読み込みます:start、end、step。ステップ(増分)は正または負の値になる可能性があります。範囲は両端を含みます(stride(from:through:by:)を使用してください)。
以下を出力してください:
- ストライド内の値を
,で連結したもの - 生成された値の個数
入力が 0 / 10 / 3 の場合、出力は以下のようになります:
0,3,6,9
4入力が 10 / 0 / -2 の場合、出力は以下のようになります:
10,8,6,4,2,0
6チートシート
カスタムのステップサイズが必要な場合や、カウントダウンを行う場合には、strideを使用します。
stride(from:to:by:) — 半開(終了値を含まない):
for n in stride(from: 0, to: 10, by: 2) { }
// 0, 2, 4, 6, 8stride(from:through:by:) — 閉(終了値を含む):
for n in stride(from: 10, through: 0, by: -2) { }
// 10, 8, 6, 4, 2, 0by:の値は方向に一致している必要があります。カウントアップの場合は正、カウントダウンの場合は負にします。不一致の場合、反復回数はゼロになります。
自分で試してみよう
let start = Int(readLine()!)!
let end = Int(readLine()!)!
let step = Int(readLine()!)!
// TODO: stride(from:through:by:) を使い、カンマで結合し、カウントを出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。