Menu
CoddyTech

Rangkuman, Pembuat Pipeline

Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 43 dari 56.

challenge icon

Tantangan

Sedang

Buat pipeline data kecil yang digerakkan oleh closure.

Baca tiga baris:

  1. Bilangan bulat min
  2. Bilangan bulat scale
  3. List bilangan bulat yang dipisahkan koma

Definisikan dua pembuat closure:

  • makeFilter(min: Int) -> (Int) -> Bool menangkap min dan mengembalikan predikat n > min
  • makeScaler(by: Int) -> (Int) -> Int menangkap by dan mengembalikan fungsi yang mengalikannya

Lalu definisikan fungsi pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] yang memfilter terlebih dahulu, lalu mentransformasi.

Cetak tiga baris:

  1. Angka yang lolos filter, digabungkan dengan ,
  2. Angka yang sama setelah diskalakan, digabungkan dengan ,
  3. Jumlah nilai yang telah diskalakan

Untuk input 5 / 3 / 2,7,3,8,9, outputnya adalah:

7,8,9
21,24,27
72

Coba sendiri

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

// TODO: buat makeFilter / makeScaler yang mengembalikan closure; pipeline(_:filter:transform:);
// lalu cetak hasil pemfilteran, hasil penskalaan, dan jumlah hasil penskalaan

Semua pelajaran di Logika dan Alur

Latihan sendiri: Playground Swift