After my first attempt at checkpoint 5, it looked like I had solved it by just using a sort of procedural approach.
let luckyNumbers = [7, 4, 38, 21, 16, 15, 12, 33, 31, 49]
let oddNumbers = luckyNumbers.filter { $0 % 2 != 0 }
let sortedOddNumbers = oddNumbers.sorted()
let sortedOddNumbersAndMessage = sortedOddNumbers.map { String($0) + " is a lucky number" }.joined(separator: "\n")
print(sortedOddNumbersAndMessage)
But, that didn't seem to be the lesson and scrolling down to the hints I saw that I'm supposed to use what we just learned.
I borrowed a bit of code from one of the lessons since I want to pass three functions through a function here, I think.
let luckyNumbers = [7, 4, 38, 21, 16, 15, 12, 33, 31, 49]
var oddNumbers = [Int]()
var sortedOddNumbers = [Int]()
func doImportantWork(first: () -> Void, second: () -> Void, third: () -> Void) {
first()
second()
third()
}
doImportantWork {
oddNumbers = luckyNumbers.filter { !$0.isMultiple(of: 2) }
} second: {
sortedOddNumbers = oddNumbers.sorted()
} third: {
let sortedOddNumbersMessage = sortedOddNumbers.map { String($0) + " is a lucky number" }.joined(separator: "\n")
print(sortedOddNumbersMessage)
}
It works. But, this can't be right.