Шаг
Часть раздела Логика и управление потоком путешествия по 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, 8for n in stride(from: 10, through: 0, by: -2) {
print(n)
}
// 10, 8, 6, 4, 2, 0Аргумент by: должен иметь правильный знак: положительный при счете на увеличение, отрицательный при счете на уменьшение. В случае несовпадения цикл выполнится ноль раз.
Задание
ЛегкоПрочитайте три целых числа (три строки): 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, 0Значение by: должно соответствовать направлению: положительное при счете вверх, отрицательное при счете вниз. Несоответствие приводит к нулевому количеству итераций.
Попробуйте сами
let start = Int(readLine()!)!
let end = Int(readLine()!)!
let step = Int(readLine()!)!
// TODO: stride(from:through:by:), объединить через запятую, затем вывести количество
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря