Итоги — Pipeline Builder
Часть раздела Логика и управление потоком путешествия по Swift на Coddy — урок 43 из 56.
Задание
СреднеСоздайте небольшой конвейер данных, управляемый замыканиями.
Прочитайте три строки:
- Целое число
min - Целое число
scale - Список целых чисел, разделенных запятыми
Определите две фабрики замыканий:
makeFilter(min: Int) -> (Int) -> Boolзахватываетminи возвращает предикатn > minmakeScaler(by: Int) -> (Int) -> Intзахватываетbyи возвращает функцию, которая умножает на это значение
Затем определите функцию pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int], которая сначала фильтрует, а затем преобразует данные.
Выведите три строки:
- Числа, прошедшие фильтр, разделенные
, - Те же числа после масштабирования, разделенные
, - Сумму масштабированных значений
Для входных данных 5 / 3 / 2,7,3,8,9 результатом будет:
7,8,9
21,24,27
72Попробуйте сами
let minVal = Int(readLine()!)!
let scale = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: реализовать makeFilter / makeScaler, возвращающие замыкания; pipeline(_:filter:transform:);
// затем вывести отфильтрованные, масштабированные значения и сумму масштабированных
Все уроки раздела Логика и управление потоком
1Строки в деталях
Подсчет и индексыРегистр и удаление пробеловПоиск в строкахРазделение и объединениеЗамена подстрокИтоги — Проверка имени пользователя4Множества
Создание множествОбъединение и пересечениеРазность и симметрическая разностьПодмножество и надмножествоИтоги — Фильтр тегов7Проект — Трекер привычек
Обзор проектаОтметить выполнение10Проект — Движок викторины
Обзор проектаЗадаем вопросы2Диапазоны и шаги
Закрытые и полуоткрытыеШагМетоды диапазоновДиапазоны в SwitchИтоги: Сетка календаря8Замыкания
Основы замыканийПоследующие замыканияЗахват значенийВозврат замыканийСобственные функции высшего порядкаИтоги — Pipeline Builder