Menu
Coddy logo textTech

סיכום – בונה צינורות עיבוד

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 43 מתוך 56.

challenge icon

אתגר

בינוני

בנו צינור נתונים קטן שמבוסס על סגירות.

קראו שלוש שורות:

  1. מספר שלם min
  2. מספר שלם scale
  3. רשימה של מספרים שלמים המופרדים בפסיקים

הגדירו שתי פונקציות שיוצרות סגירות:

  • makeFilter(min: Int) -> (Int) -> Bool לוכדת את min ומחזירה תנאי n > min
  • makeScaler(by: Int) -> (Int) -> Int לוכדת את by ומחזירה פונקציה שמכפילה בו

לאחר מכן הגדירו פונקציה pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int] שמסננת תחילה ואז מבצעת טרנספורמציה.

הדפיסו שלוש שורות:

  1. המספרים שעברו את הסינון, כשהם מופרדים באמצעות ,
  2. אותם מספרים לאחר הכפלה בקנה המידה, כשהם מופרדים באמצעות ,
  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)! }

// TODO: לכתוב makeFilter / makeScaler שמחזירות סגירות; pipeline(_:filter:transform:);
// לאחר מכן להדפיס את הערכים שסוננו, את הערכים שהוכפלו ב-scale ואת סכומם

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: Swift אונליין