Anonymous user
Power set: Difference between revisions
m
Fix language name, sort order and <lang> tag for Objective-C.
(→{{header|C}}: removed second method: does the same thing, except in a convoluted and inefficient way) |
m (Fix language name, sort order and <lang> tag for Objective-C.) |
||
Line 1,009:
{1x0 cell} {1x1 cell} {1x1 cell} {1x2 cell} %This is the same as { {},{{1,2}},{3},{{1,2},3} }</lang>
<lang objc>#import <Foundation/Foundation.h>▼
+ (NSArray *)powerSetForArray:(NSArray *)array {▼
UInt32 subsetCount = (UInt32)exp2(array.count);▼
NSMutableArray *subsets = [NSMutableArray arrayWithCapacity:subsetCount];▼
for(int subsetIndex = 0; subsetIndex < subsetCount; subsetIndex++) {▼
NSMutableArray *subset = [[NSMutableArray alloc] init];▼
for (int itemIndex = 0; itemIndex < array.count; itemIndex++) {▼
if((subsetIndex >> itemIndex) & 0x1) {▼
[subset addObject:[array objectAtIndex:itemIndex]];▼
}▼
} ▼
[subsets insertObject:subset atIndex:subsetIndex];▼
[subset release];▼
}▼
return subsets;▼
}</lang>▼
=={{header|OCaml}}==
Line 1,034 ⟶ 1,053:
version for lists:
<lang ocaml>let subsets xs = List.fold_right (fun x rest -> rest @ List.map (fun ys -> x::ys) rest) xs [[]]</lang>
▲=={{header|Obj-C}}==
▲#import <Foundation/Foundation.h>
▲+ (NSArray *)powerSetForArray:(NSArray *)array {
▲ UInt32 subsetCount = (UInt32)exp2(array.count);
▲ NSMutableArray *subsets = [NSMutableArray arrayWithCapacity:subsetCount];
▲ for(int subsetIndex = 0; subsetIndex < subsetCount; subsetIndex++) {
▲ NSMutableArray *subset = [[NSMutableArray alloc] init];
▲ for (int itemIndex = 0; itemIndex < array.count; itemIndex++) {
▲ if((subsetIndex >> itemIndex) & 0x1) {
▲ [subset addObject:[array objectAtIndex:itemIndex]];
▲ }
▲ }
▲ [subsets insertObject:subset atIndex:subsetIndex];
▲ [subset release];
▲ }
▲ return subsets;
▲</lang>
=={{header|Oz}}==
|