Definicja problemu
Wydrukuj zestaw energetyczny danego zestawu. Na przykład:
[1, 2, 3] => [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
Każdy element należy wydrukować w osobnej linii, więc powyższy przykład wydrukowano by jako:
[]
[1]
[2]
...
[1, 2, 3]
Przykładowy kod (w D, tutaj przykład 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);
}
Wkład
Elementy będą przekazywane jako argumenty. Na przykład powyższy przykład zostanie przekazany do programu o nazwie powerset
jako:
powerset 1 2 3
Argumenty będą alfanumeryczne.
Zasady
- Brak bibliotek oprócz io
- Wyjścia nie trzeba zamawiać
- Powerset nie musi być przechowywany, tylko drukowany
- Elementy w zestawie musi być ograniczony (na przykład
1,2,3
,[1,2,3]
i['1','2','3']
są dopuszczalne, ale123
nie jest- Końcowe ograniczniki są w porządku (np.
1,2,3, == 1,2,3
)
- Końcowe ograniczniki są w porządku (np.
- Najlepsze określa się na podstawie liczby bajtów
Najlepsze rozwiązanie zostanie ustalone nie później niż 10 dni po pierwszym złożeniu.
lambda L:reduce(lambda r,x:r+[s+[x]for s in r],L,[[]])
.