trim(L1,N,L2) which is true if L2 contains the first N elements of L1
我需要使用conc关系编写序言代码。我是prolog的新手,所以我的代码有问题。有人可以纠正我吗?
trim(L1, N, L2):- conc(L2,T,L1), length(L2,N),length(L1,N2), N2>= N
大多数人也使用附加和递归编写了代码。请足够友好地帮助我使用conc。
答案 0 :(得分:0)
trim(L1,N,L2):-conc(L3,_,L1),conc(L2,_,L3),length(L2,N),!.
答案 1 :(得分:0)
您快到了。只需将“ T”匿名即可,您就可以了。
conc([],L,L).
conc([Head|L1],L2,[Head|L]):-conc(L1,L2,L).
trim(L1,N,L2) :-conc(L2,_,L1) ,length(L2,N).
问问。
?- trim([1,2,3],1,X).
X = [1] ;
?- trim([1,2,3],0,X).
X = [] ;
?- trim([1,2,3],2,[1,2]).
true.