Power set: Difference between revisions
Content deleted Content added
→{{header|Prolog}}: be kind :) I am a noob in prolog. |
|||
Line 783: | Line 783: | ||
@{ (reduce { [@$a, map([@$_, $b], @$a)] } [[]], @_) } |
@{ (reduce { [@$a, map([@$_, $b], @$a)] } [[]], @_) } |
||
}</lang> |
}</lang> |
||
=={{header|Prolog}}== |
|||
<lang prolog> |
|||
%powerset(Lst, PLst). |
|||
addhead(Hd,Lst,Res):- |
|||
Res = [Hd |Lst]. |
|||
head([H|_],H). |
|||
tail([_|T],T). |
|||
powerset([], [[]]). |
|||
powerset(Lst, PLst):- |
|||
head(Lst,Hd), |
|||
tail(Lst,Tl), |
|||
powerset(Tl,Rest), |
|||
maplist(addhead(Hd), Rest, Ans), |
|||
append(Rest, Ans, PLst). |
|||
e.g |
|||
powerset([1,2,3,4], R), write_term(R, [max_depth(100)]). |
|||
[[], |
|||
[4], [3], [3, 4], [2], [2, 4], [2, 3], [2, 3, 4], |
|||
[1], [1, 4], [1, 3], [1, 3, 4], [1, 2], [1, 2, 4], |
|||
[1, 2, 3], [1, 2, 3, 4]] |
|||
</lang> |
|||
=={{header|Python}}== |
=={{header|Python}}== |