Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - بناء Pipeline

جزء من قسم المنطق والتدفق في رحلة Swift على Coddy — الدرس 43 من 56.

challenge icon

التحدي

متوسط

قم ببناء خط معالجة بيانات (data pipeline) صغير يعتمد على الإغلاقات (closures).

اقرأ ثلاثة أسطر:

  1. عدد صحيح min
  2. عدد صحيح scale
  3. قائمة من الأعداد الصحيحة مفصولة بفاصلة

قم بتعريف مصنعين للإغلاقات (closure factories):

  • makeFilter(min: Int) -> (Int) -> Bool يلتقط min ويعيد دالة شرطية (predicate) n > min
  • makeScaler(by: Int) -> (Int) -> Int يلتقط by ويعيد دالة تقوم بالضرب فيه

ثم قم بتعريف دالة pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] تقوم بالتصفية أولاً، ثم التحويل.

اطبع ثلاثة أسطر:

  1. الأرقام التي اجتازت التصفية، مدمجة بـ ,
  2. نفس الأرقام بعد القياس (scaling)، مدمجة بـ ,
  3. مجموع القيم التي تم قياسها

للمدخلات 5 / 3 / 2,7,3,8,9، المخرجات هي:

7,8,9
21,24,27
72

جرّب بنفسك

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

// مهام مطلوبة: makeFilter / makeScaler تعيد closures؛ pipeline(_:filter:transform:);
// ثم اطبع القيم المصفاة، والمكبرة، ومجموع القيم المكبرة

جميع دروس المنطق والتدفق