我需要一个谓词来返回一个包含输入列表的所有组合的列表,并且列表结果大小位于第二个参数中,谓词将是这样的
permutInListN( +inputList, +lengthListResult, -ListResult),
Run Code Online (Sandbox Code Playgroud)
例子:
permutInListN([1,2,3],2,L).
? L=[1,2].
? L=[2,1].
? L=[1,3].
? L=[3,1].
? L=[2,3].
? L=[3,2].
Run Code Online (Sandbox Code Playgroud)
[1,2,3]列表中L与 length的组合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]
Run Code Online (Sandbox Code Playgroud)
提前致谢。