Definisi masalah
Cetak Power Set dari set yang diberikan. Sebagai contoh:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
Setiap elemen harus dicetak pada baris terpisah, jadi contoh di atas akan dicetak sebagai:
[]
[1]
[2]
...
[1, 2, 3]
Kode contoh (dalam D, contoh python di sini ):
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);
}
Memasukkan
Elemen akan diteruskan sebagai argumen. Misalnya, contoh yang diberikan di atas akan diteruskan ke program yang disebut powerset
:
powerset 1 2 3
Argumen akan menjadi alfanumerik.
Aturan
- Tidak ada perpustakaan selain io
- Output tidak harus dipesan
- Powerset tidak harus disimpan, hanya dicetak
- Elemen-elemen dalam himpunan harus dibatasi (misalnya
1,2,3
,[1,2,3]
dan['1','2','3']
dapat diterima, tetapi123
tidak- Pembatas trailing baik-baik saja (mis.
1,2,3, == 1,2,3
)
- Pembatas trailing baik-baik saja (mis.
- Terbaik ditentukan berdasarkan jumlah byte
Solusi terbaik akan diputuskan tidak kurang dari 10 hari setelah pengiriman pertama.
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
.