Power set: Difference between revisions

Added Swift version
No edit summary
(Added Swift version)
Line 3,582:
version for lists:
<lang sml>fun subsets xs = foldr (fn (x, rest) => rest @ map (fn ys => x::ys) rest) [[]] xs</lang>
 
=={{header|Swift}}==
{{works with|Swift|Revision 4.1 - tested with Xcode 9.2 playground}}
 
<lang swift>
func powersetFrom<T>(_ elements: Set<T>) -> Set<Set<T>> {
guard elements.count > 0 else {
return [[]]
}
var powerset: Set<Set<T>> = [[]]
for element in elements {
for subset in powerset {
powerset.insert(subset.union([element]))
}
}
return powerset
}
 
// Example:
powersetFrom([1, 2, 4])</lang>
{{out}}
<pre>{
{2, 4}
{4, 1}
{4},
{2, 4, 1}
{2, 1}
Set([])
{1}
{2}
}
</pre>
 
=={{header|Tcl}}==