Menu
Coddy logo textTech

Recapitulação - Pipeline Builder

Parte da seção Lógica e Fluxo do Journey de Swift da Coddy — lição 43 de 56.

challenge icon

Desafio

Médio

Construa um pequeno pipeline de dados impulsionado por closures.

Leia três linhas:

  1. Um número inteiro min
  2. Um número inteiro scale
  3. Uma lista de inteiros separados por vírgula

Defina duas fábricas de closures:

  • makeFilter(min: Int) -> (Int) -> Bool captura min e retorna um predicado n > min
  • makeScaler(by: Int) -> (Int) -> Int captura by e retorna uma função que multiplica por ele

Em seguida, defina uma função pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] que filtra primeiro e depois transforma.

Imprima três linhas:

  1. Os números que sobreviveram ao filtro, unidos por ,
  2. Os mesmos números após o escalonamento, unidos por ,
  3. A soma dos valores escalonados

Para a entrada 5 / 3 / 2,7,3,8,9, a saída é:

7,8,9
21,24,27
72

Experimente você mesmo

let minVal = Int(readLine()!)!
let scale = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: makeFilter / makeScaler retornando closures; pipeline(_:filter:transform:);
// depois imprima os filtrados, os escalonados e a soma dos escalonados

Todas as lições de Lógica e Fluxo