Визначення проблеми
Роздрукуйте живлення даного набору. Наприклад:
[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
Аргументи будуть буквено-цифровими.
Правила
- Жодної бібліотеки, крім іо
- Вихідні дані не потрібно замовляти
- 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,[[]])
.