Menu
Coddy logo textTech

Récapitulatif - Pipeline Builder

Fait partie de la section Logique et Flux du Journey Swift de Coddy — leçon 43 sur 56.

challenge icon

Défi

Moyen

Construisez un petit pipeline de données piloté par des fermetures (closures).

Lisez trois lignes :

  1. Un entier min
  2. Un entier scale
  3. Une liste d'entiers séparés par des virgules

Définissez deux fabriques de fermetures :

  • makeFilter(min: Int) -> (Int) -> Bool capture min et renvoie un prédicat n > min
  • makeScaler(by: Int) -> (Int) -> Int capture by et renvoie une fonction qui multiplie par celui-ci

Ensuite, définissez une fonction pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] qui filtre d'abord, puis transforme.

Affichez trois lignes :

  1. Les nombres qui ont survécu au filtre, joints par ,
  2. Les mêmes nombres après mise à l'échelle, joints par ,
  3. La somme des valeurs mises à l'échelle

Pour l'entrée 5 / 3 / 2,7,3,8,9, la sortie est :

7,8,9
21,24,27
72

Essayez vous-même

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

// TODO: makeFilter / makeScaler retournant des fermetures (closures) ; pipeline(_:filter:transform:) ;
// ensuite afficher les éléments filtrés, mis à l'échelle, et la somme de ceux mis à l'échelle

Toutes les leçons de Logique et Flux