Definición del problema
Imprima el conjunto de potencia de un conjunto dado. Por ejemplo:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
Cada elemento debe imprimirse en una línea separada, por lo que el ejemplo anterior se imprimirá como:
[]
[1]
[2]
...
[1, 2, 3]
Código de ejemplo (en D, ejemplo de python aquí ):
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
Los elementos se pasarán como argumentos. Por ejemplo, el ejemplo proporcionado anteriormente se pasaría a un programa llamado powerset
como:
powerset 1 2 3
Los argumentos serán alfanuméricos.
Reglas
- No hay bibliotecas además de io
- La salida no tiene que ser ordenada
- Powerset no tiene que ser almacenado, solo impreso
- Los elementos del conjunto deben estar delimitados (por ejemplo
1,2,3
,[1,2,3]
y['1','2','3']
son aceptables, pero123
no lo son- Los delimitadores finales están bien (p
1,2,3, == 1,2,3
. Ej. )
- Los delimitadores finales están bien (p
- El mejor se determina en función del número de bytes
La mejor solución se decidirá no menos de 10 días después de la primera presentación.
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
.