Problem tanımı
Belirli bir setin güç ünitesini yazdırın. Örneğin:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
Her eleman ayrı bir satıra basılacaktır, bu nedenle yukarıdaki örnek şöyle basılacaktır:
[]
[1]
[2]
...
[1, 2, 3]
Örnek kod (D'de python örneği burada ):
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);
}
Giriş
Öğeler argüman olarak iletilir. Örneğin, yukarıda verilen örnek şu şekilde adlandırılan bir programa geçirilir powerset
:
powerset 1 2 3
Argümanlar alfanümerik olacaktır.
kurallar
- İo dışında kitaplık yok
- Çıktı sipariş etmek zorunda değil
- Powerset'in saklanması gerekmiyor, yalnızca basılı
- Kümesindeki elemanlar, örneğin (ayrılmış gerekir
1,2,3
,[1,2,3]
ve['1','2','3']
kabul edilebilir, ancak123
değil- İz sınırlayıcıları iyi (örn.
1,2,3, == 1,2,3
)
- İz sınırlayıcıları iyi (örn.
- En iyi bayt sayısına göre belirlenir
İlk başvurudan en az 10 gün sonra en iyi çözüme karar verilecektir.
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
.