Menu
Coddy logo textTech

Podsumowanie – konstruktor potoków

Część sekcji Logika i przepływ programu ścieżki Swift w Coddy. Lekcja 43 z 56.

challenge icon

Wyzwanie

Średni

Zbuduj niewielki potok danych oparty na domknięciach.

Odczytaj trzy wiersze:

  1. Liczba całkowita min
  2. Liczba całkowita scale
  3. Rozdzielana przecinkami lista liczb całkowitych

Zdefiniuj dwie funkcje tworzące domknięcia:

  • makeFilter(min: Int) -> (Int) -> Bool przechwytuje min i zwraca predykat n > min
  • makeScaler(by: Int) -> (Int) -> Int przechwytuje by i zwraca funkcję, która mnoży przez tę wartość

Następnie zdefiniuj funkcję pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int], która najpierw filtruje, a potem przekształca.

Wyświetl trzy wiersze:

  1. Liczby, które przeszły przez filtr, połączone za pomocą ,
  2. Te same liczby po przeskalowaniu, połączone za pomocą ,
  3. Sumę przeskalowanych wartości

Dla danych wejściowych 5 / 3 / 2,7,3,8,9 wynikiem jest:

7,8,9
21,24,27
72

Spróbuj swoich sił

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

// TODO: makeFilter / makeScaler zwracające domknięcia; pipeline(_:filter:transform:);
// następnie wypisz przefiltrowane, przeskalowane oraz sumę przeskalowanych

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Edytor online Swift