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:);
// ثم اطبع القيم المصفاة، والمكبرة، ومجموع القيم المكبرة

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

تدرّب بنفسك: Playground لـ Swift