【发布时间】:2018-12-07 11:43:52
【问题描述】:
我需要一个谓词来返回一个包含输入列表的所有组合的列表,并且列表结果大小在第二个参数中,谓词应该是这样的
permutInListN( +inputList, +lengthListResult, -ListResult),
示例:
permutInListN([1,2,3],2,L).
? L=[1,2].
? L=[2,1].
? L=[1,3].
? L=[3,1].
? L=[2,3].
? L=[3,2].
列表中[1,2,3] 的组合L 与长度2。
没有重复可能使用偏移。
这是我的代码,但它根本不起作用,没有生成所有解决方案
permutInListN(_, 0, []).
permutInListN([X|Xs], N, [X|Ys]) :- N1 is N-1, permutInListN(Xs,N1,Ys).
permutInListN([_|Xs], N, Y) :- N>0, permutInListN(Xs,N,Y).
?permutInListN([1,2,3],2,L).
L = [1, 2]
L = [1, 3]
L = [2, 3]
提前致谢。
【问题讨论】:
-
我的错,去掉了标志
标签: list prolog combinations permutation