Menu
Coddy logo textTech

Шаг

Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 8 из 56.

Диапазон проходит по одному шагу за раз. Если вам нужен другой размер шага или вы хотите вести обратный отсчет (вниз), используйте stride.

Два варианта: stride(from:to:by:) останавливается перед вторым значением (полуоткрытый), stride(from:through:by:) может включать его (закрытый):

for n in stride(from: 0, to: 10, by: 2) {
    print(n)
}
// 0, 2, 4, 6, 8
for n in stride(from: 10, through: 0, by: -2) {
    print(n)
}
// 10, 8, 6, 4, 2, 0

Аргумент by: должен иметь правильный знак: положительный при счете на увеличение, отрицательный при счете на уменьшение. В случае несовпадения цикл выполнится ноль раз.

challenge icon

Задание

Легко

Прочитайте три целых числа (три строки): start, end, step. Шаг может быть положительным или отрицательным. Диапазон является включительным с обеих сторон (используйте stride(from:through:by:)).

Выведите:

  1. Значения в последовательности, разделенные ,
  2. Количество полученных значений

Для входных данных 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, 8

stride(from:through:by:) — закрытый интервал (включает конечное значение):

for n in stride(from: 10, through: 0, by: -2) { }
// 10, 8, 6, 4, 2, 0

Значение by: должно соответствовать направлению: положительное при счете вверх, отрицательное при счете вниз. Несоответствие приводит к нулевому количеству итераций.

Попробуйте сами

let start = Int(readLine()!)!
let end = Int(readLine()!)!
let step = Int(readLine()!)!

// TODO: stride(from:through:by:), объединить через запятую, затем вывести количество
quiz iconПроверьте себя

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

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