Menu
Coddy logo textTech

Rückblick – Pipeline Builder

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 43 von 56.

challenge icon

Aufgabe

Mittel

Erstellen Sie eine kleine Datenpipeline, die durch Closures gesteuert wird.

Lesen Sie drei Zeilen ein:

  1. Eine Ganzzahl min
  2. Eine Ganzzahl scale
  3. Eine durch Kommas getrennte Liste von Ganzzahlen

Definieren Sie zwei Closure-Factorys:

  • makeFilter(min: Int) -> (Int) -> Bool erfasst min und gibt ein Prädikat n > min zurück
  • makeScaler(by: Int) -> (Int) -> Int erfasst by und gibt eine Funktion zurück, die damit multipliziert

Definieren Sie dann eine Funktion pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int], die zuerst filtert und dann transformiert.

Geben Sie drei Zeilen aus:

  1. Die Zahlen, die den Filter bestanden haben, verbunden mit ,
  2. Dieselben Zahlen nach der Skalierung, verbunden mit ,
  3. Die Summe der skalierten Werte

Für die Eingabe 5 / 3 / 2,7,3,8,9 lautet die Ausgabe:

7,8,9
21,24,27
72

Probier es selbst

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

// TODO: makeFilter / makeScaler erstellen, die Closures zurückgeben; pipeline(_:filter:transform:);
// dann gefilterte, skalierte Werte und die Summe der skalierten Werte ausgeben

Alle Lektionen in Logik & Kontrollfluss