Definição de problema
Imprima o conjunto de potência de um determinado conjunto. Por exemplo:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
Cada elemento deve ser impresso em uma linha separada, portanto, o exemplo acima seria impresso como:
[]
[1]
[2]
...
[1, 2, 3]
Código de exemplo (em D, exemplo de python aqui ):
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);
}
Entrada
Os elementos serão passados como argumentos. Por exemplo, o exemplo fornecido acima seria passado para um programa chamado powerset
como:
powerset 1 2 3
Os argumentos serão alfanuméricos.
Regras
- Nenhuma biblioteca além de io
- A saída não precisa ser solicitada
- O Powerset não precisa ser armazenado, apenas impresso
- Os elementos do conjunto devem ser delimitados (por exemplo
1,2,3
,[1,2,3]
e['1','2','3']
são aceitáveis, mas123
não são- Delimitadores à direita são bons (por exemplo
1,2,3, == 1,2,3
)
- Delimitadores à direita são bons (por exemplo
- O melhor é determinado com base no número de bytes
A melhor solução será decidida pelo menos 10 dias após o primeiro envio.
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
.