//Silver Challenge
func siftBeans(fromGroceryList stuff: [String]) -> (beans: [String], otherGroceries: [String]) {
var i: Int = 0
var beans = [String]()
var otherGroceries = [String]()
while i < stuff.count {
let thisItem = stuff[i]
if thisItem.contains("beans") || thisItem.contains("Beans") {
beans.append(thisItem)
} else {
otherGroceries.append(thisItem)
}
i += 1
}
return(beans, otherGroceries)
}
// Call the function sending the grocery list
let results = siftBeans(fromGroceryList: ["green beans", "milk", "black beans", "pinto beans", "apples", "ugly Beans"])
//Print the returns
print("The beans in the list are: \(results.beans).")
print("The other groceries in the list are: \(results.otherGroceries).")
// Silver Challenge: I made this work, but is there a cleaner way to write this? Also I do not understand the need for the optional call out and force unwrap in this part of my code… (item?.contains(“beans”))! {
let GroceryList = [“green beans”,“beans”, “milk”, “black beans”, “pinto beans”, “apples”]
func siftBeans(fromGroceryList list: [String?]) -> (beans: [String?], otherGroceries: [String?]) {
var beans = String?
var otherGroceries = String?
if list.count > 0 {
for i in 0…(list.count - 1) {
let item = list[i]
if (item?.contains(“beans”))! {
beans.append(item)
} else {
otherGroceries.append(item)
}
}
}
print(beans, otherGroceries)
return (beans, otherGroceries)
}
siftBeans(fromGroceryList: GroceryList)
func siftBeans(fromGroceryList list: [String]) -> (beans: [String], otherGroceries: [String]){
var beans = [String]()
var otherGroceries = [String]()
for items in list {
if (items.hasSuffix("beans")) {
beans.append(items)
}
else {
otherGroceries.append(items)
}
}
return (beans, otherGroceries)
}
let result = siftBeans(fromGroceryList: ["green beans","milk","black beans","pinto beans","apples"])
result.beans
result.otherGroceries