问题定义
打印出给定集合的幂集。例如:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
每个元素都将打印在单独的行上,因此上面的示例将打印为:
[]
[1]
[2]
...
[1, 2, 3]
示例代码(在D,这里是 python示例):
import std.stdio;
string[][] powerset(string[] set) {
if (set.length == 1) {
return [set, []];
}
string[][] ret;
foreach (item; powerset(set[1 .. $])) {
ret ~= set[0]~item;
ret ~= item;
}
return ret;
}
void main(string[] argv) {
foreach (set; powerset(argv[1 .. $]))
writeln(set);
}
输入项
元素将作为参数传递。例如,上面提供的示例将传递给名为的程序powerset
:
powerset 1 2 3
参数将为字母数字。
规则
- io之外没有库
- 不必订购输出
- Powerset不必存储,只需打印
- 集合中的元素必须被分隔(例如
1,2,3
,[1,2,3]
和['1','2','3']
是可接受的,但123
不是- 尾部定界符很好(例如
1,2,3, == 1,2,3
)
- 尾部定界符很好(例如
- 最佳取决于字节数
最佳解决方案将在首次提交后的10天内决定。
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
。