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

Entraînez-vous par vous-même : Playground Swift