Power set: Difference between revisions
Content added Content deleted
(Added Logtalk version.) |
(→{{header|Prolog}}: replaced by cleaner version. non findall version will be added later.) |
||
Line 1,078: | Line 1,078: | ||
=={{header|Prolog}}== |
=={{header|Prolog}}== |
||
<lang prolog> |
<lang prolog> |
||
powerset(Set,PowerSet) :- |
|||
findall(SubSet,subset(Set,SubSet),PowerSet). |
|||
addhead(Hd,Lst,Res):- |
|||
Res = [Hd |Lst]. |
|||
subset([],[]). |
|||
subset([_|Tail],Set) :- subset(Tail,Set). |
|||
tail([_|T],T). |
|||
subset([Head|Tail],[Head|Set]) :- subset(Tail,Set). |
|||
⚫ | |||
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]] |
|||
⚫ | |||
X = [[], [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> |
</lang> |
||
=={{header|PureBasic}}== |
=={{header|PureBasic}}== |
||
This code is for console mode. |
This code is for console mode. |