Định nghĩa vấn đề
In ra bộ quyền hạn của một bộ nhất định. Ví dụ:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
Mỗi phần tử sẽ được in trên một dòng riêng biệt, vì vậy ví dụ trên sẽ được in dưới dạng:
[]
[1]
[2]
...
[1, 2, 3]
Mã ví dụ (trong D, ví dụ python ở đây ):
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);
}
Đầu vào
Các yếu tố sẽ được thông qua dưới dạng đối số. Ví dụ: ví dụ được cung cấp ở trên sẽ được chuyển đến một chương trình có tên powerset
là:
powerset 1 2 3
Đối số sẽ là chữ và số.
Quy tắc
- Không có thư viện ngoài io
- Đầu ra không phải đặt hàng
- Powerset không phải được lưu trữ, chỉ được in
- Các yếu tố trong tập phải được phân định (ví dụ
1,2,3
,[1,2,3]
và['1','2','3']
được chấp nhận, nhưng123
không phải là- Dấu phân cách lưu trữ là tốt (ví dụ
1,2,3, == 1,2,3
)
- Dấu phân cách lưu trữ là tốt (ví dụ
- Tốt nhất được xác định dựa trên số byte
Giải pháp tốt nhất sẽ được quyết định không dưới 10 ngày sau lần gửi đầu tiên.
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
.