Menu
Coddy logo textTech

Riepilogo - Costruttore di pipeline

Fa parte della sezione Logica e flusso del percorso Swift di Coddy. Lezione 43 di 56.

challenge icon

Sfida

Medio

Crea una piccola pipeline di dati basata sulle chiusure.

Leggi tre righe:

  1. Un numero intero min
  2. Un numero intero scale
  3. Un elenco di numeri interi separati da virgole

Definisci due factory di chiusure:

  • makeFilter(min: Int) -> (Int) -> Bool cattura min e restituisce un predicato n > min
  • makeScaler(by: Int) -> (Int) -> Int cattura by e restituisce una funzione che moltiplica per quel valore

Definisci poi una funzione pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] che prima filtra e poi trasforma.

Stampa tre righe:

  1. I numeri che hanno superato il filtro, uniti da ,
  2. Gli stessi numeri dopo averli moltiplicati per il fattore di scala, uniti da ,
  3. La somma dei valori moltiplicati per il fattore di scala

Per l'input 5 / 3 / 2,7,3,8,9, l'output è:

7,8,9
21,24,27
72

Provalo tu

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

// TODO: makeFilter / makeScaler che restituiscano closure; pipeline(_:filter:transform:);
// poi stampa i valori filtrati, quelli scalati e la somma dei valori scalati

Tutte le lezioni di Logica e flusso

Esercitati da solo: Playground Swift