Problem Definition
Drucken Sie das Powerset eines bestimmten Sets aus. Beispielsweise:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
Jedes Element muss in einer separaten Zeile gedruckt werden, sodass das obige Beispiel wie folgt gedruckt wird:
[]
[1]
[2]
...
[1, 2, 3]
Beispielcode (in D, Python-Beispiel hier ):
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);
}
Eingang
Elemente werden als Argumente übergeben. Das oben angegebene Beispiel wird beispielsweise an ein Programm mit dem Namen powerset
:
powerset 1 2 3
Argumente sind alphanumerisch.
Regeln
- Keine Bibliotheken außer io
- Die Ausgabe muss nicht bestellt werden
- Powerset muss nicht gespeichert, sondern nur gedruckt werden
- Elemente in der Menge begrenzt werden muss ( zum Beispiel
1,2,3
,[1,2,3]
und['1','2','3']
akzeptabel sind, aber123
sind nicht- Nachgestellte Trennzeichen sind in Ordnung (zB
1,2,3, == 1,2,3
)
- Nachgestellte Trennzeichen sind in Ordnung (zB
- Der beste Wert wird anhand der Anzahl der Bytes ermittelt
Die beste Lösung wird mindestens 10 Tage nach der ersten Einreichung entschieden.
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
.