RosettaCodeData/Task/Power-set/D/power-set-1.d

28 lines
427 B
D
Raw Permalink Normal View History

2015-11-18 06:14:39 +00:00
import std.algorithm;
import std.range;
auto powerSet(R)(R r)
{
return
(1L<<r.length)
.iota
.map!(i =>
r.enumerate
.filter!(t => (1<<t[0]) & i)
.map!(t => t[1])
);
2013-10-27 22:24:23 +00:00
}
2015-11-18 06:14:39 +00:00
unittest
{
int[] emptyArr;
assert(emptyArr.powerSet.equal!equal([emptyArr]));
assert(emptyArr.powerSet.powerSet.equal!(equal!equal)([[], [emptyArr]]));
}
2015-02-20 00:35:01 -05:00
2015-11-18 06:14:39 +00:00
void main(string[] args)
{
import std.stdio;
args[1..$].powerSet.each!writeln;
2013-10-27 22:24:23 +00:00
}