April 2017
Intermediate to advanced
316 pages
9h 33m
English
We can use reduce to partition an array with a specific criterion. For instance, in the following example, we partition numbersToPartitionArray into two partitions, keeping all even numbers in the left partition:
func partition<T>(list: [T], criteria: (T) -> Bool) -> (lPartition: [T], rPartition: [T]) { return list.reduce((lPartition: [T](), rPartition: [T]())) { (accumlator: (lPartition: [T], rPartition: [T]), pivot: T) -> (lPartition: [T], rPartition: [T]) in if criteria(pivot) { return (lPartition: accumlator.lPartition + [pivot], rPartition: accumlator.rPartition) } else { return (rPartition: accumlator.rPartition + [pivot], lPartition: accumlator.lPartition) } } } let doublesToPartition = [3.0, 4.0, ...Read now
Unlock full access