Post marked as solved
Post marked as solved with 4 replies, 176 views
I notice that this operation is expensive for the code (2^set.size). I'm looking the best practices and implementations more likely a re-work this code goes to a infinite bucle and freezes the app until it's done
func generateSubsets(set: Set<String>) -> Set<Set<String>> {
if set.count == 1 { return [set] }
let first = set.map { item -> Set<String> in
var clone = set
clone.remove(item)
return clone
}
let second = first.map(generateSubsets)
var subSets = second.reduce(Set<Set<String>>()) { accumulator, elements in
var clone = accumulator
for element in elements {
clone.insert(element)
}
return clone
}
subSets.insert(set)
return subSets
}
Example
For input ["qual1", "qual2", 'qual3"]
the combinations can be: ["qual1#qual2#qual3", "qual1#qual2", "qual1#qual3", "qual2#qual3", "qual1", "qual2", "qual3"]