Definizione del problema
Stampa il powerset di un determinato set. Per esempio:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
Ogni elemento deve essere stampato su una riga separata, quindi l'esempio sopra sarebbe stampato come:
[]
[1]
[2]
...
[1, 2, 3]
Codice di esempio (in D, esempio di python qui ):
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);
}
Ingresso
Gli elementi verranno passati come argomenti. Ad esempio, l'esempio fornito sopra verrebbe passato a un programma chiamato powerset
come:
powerset 1 2 3
Gli argomenti saranno alfanumerici.
Regole
- Nessuna biblioteca oltre a io
- L'output non deve essere ordinato
- Powerset non deve essere memorizzato, ma solo stampato
- Gli elementi nel set devono essere delimitati (ad esempio
1,2,3
,[1,2,3]
e['1','2','3']
sono accettabili, ma123
non lo sono- I delimitatori finali vanno bene (ad es.
1,2,3, == 1,2,3
)
- I delimitatori finali vanno bene (ad es.
- La migliore è determinata in base al numero di byte
La soluzione migliore sarà decisa non meno di 10 giorni dopo la prima presentazione.
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
.