Menu
CoddyTech

Ôn tập: xây dựng pipeline

Thuộc phần Logic và luồng thực thi trong hành trình Swift của Coddy. Bài học 43 trên 56.

challenge icon

Thử thách

Trung bình

Xây dựng một quy trình xử lý dữ liệu nhỏ bằng các bao đóng.

Đọc ba dòng:

  1. Một số nguyên min
  2. Một số nguyên scale
  3. Một danh sách số nguyên, phân tách bằng dấu phẩy

Định nghĩa hai hàm tạo bao đóng:

  • makeFilter(min: Int) -> (Int) -> Bool lưu giữ min và trả về một vị từ n > min
  • makeScaler(by: Int) -> (Int) -> Int lưu giữ by và trả về một hàm nhân với giá trị đó

Sau đó, định nghĩa hàm pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] để lọc trước, rồi biến đổi.

In ra ba dòng:

  1. Các số vượt qua bộ lọc, nối với nhau bằng ,
  2. Các số đó sau khi nhân, nối với nhau bằng ,
  3. Tổng các giá trị sau khi nhân

Với đầu vào 5 / 3 / 2,7,3,8,9, đầu ra là:

7,8,9
21,24,27
72

Tự làm thử

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

// TODO: viết makeFilter / makeScaler trả về các hàm đóng (closure); pipeline(_:filter:transform:);
// sau đó in ra các giá trị đã lọc, đã nhân với scale và tổng của các giá trị đã nhân với scale

Tất cả bài học trong Logic và luồng thực thi

Tự luyện tập: Playground Swift