本文介绍了gnu Prolog Powerset修改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我得到这个用于功率设置:

So i got this for powerset:

powerset([], []).
powerset([H|T], P) :- powerset(T,P).
powerset([H|T], [H|P]) :- powerset(T,P).

这将生成列表的所有集合.是否可以按列表顺序生成所有集合.

This generates all sets of a list. Is it possible to generate all sets in list order.

示例:

List = [a,b,c]

我想得到

[a],[a,b],[a,b,c],[b],[b,c],[c]

请注意,此子集列表中没有[a,c],因为它们是从左到右开始的子集.

Note there is no [a,c] in this list of subsets since these are subsets starting from the left and going to the right.

我尝试使用附加和递归的组合,但是并没有达到我想要的效果.在这一点上有点难受.

I've tried using a combination of append and recursion, but that didn't work out as i wanted it to. Little stumped at this point.

谢谢.

推荐答案

如何

powerset(L, [H|T]):-
  append([H|T], _, L).
powerset([_|L], P):-
  powerset(L, P).

这篇关于gnu Prolog Powerset修改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-14 22:13