Prolog 序言列表-复制头
我试图从一个术语列表中列出两个连续的术语。所以,如果L1和L2是列表,并且L2在一行中包含L1中的每个元素两次,则echo应该返回True。 没有clpfd 我想让echo接受Prolog 序言列表-复制头,prolog,clpfd,prolog-lists,Prolog,Clpfd,Prolog Lists,我试图从一个术语列表中列出两个连续的术语。所以,如果L1和L2是列表,并且L2在一行中包含L1中的每个元素两次,则echo应该返回True。 没有clpfd 我想让echo接受 echo([x,1,[b]], L). 然后返回 L = [x,x,1,1,[b],[b]]. 它确实与 echo([2,1],[2,2,1,1]). true. 这就是我目前所拥有的 echo([],[]). echo([X|XS], [Y,Z|YZS]) :- X #= Y, Y #= Z,
echo([x,1,[b]], L).
然后返回
L = [x,x,1,1,[b],[b]].
它确实与
echo([2,1],[2,2,1,1]).
true.
这就是我目前所拥有的
echo([],[]).
echo([X|XS], [Y,Z|YZS]) :-
X #= Y,
Y #= Z,
echo(XS, YZS).
我得到一个关于terms=>
Domain error: `clpfd_expression' expected, found `x'
我猜你不想使用CLPFD 没有CLPFD:
echo([], []).
echo([X|Xs], [X,X|Ys]):-
echo(Xs, Ys).
我猜你不想使用CLPFD 没有CLPFD:
echo([], []).
echo([X|Xs], [X,X|Ys]):-
echo(Xs, Ys).
您需要预先注意,这是在使用
clpfd
。Prolog和带有clpfd的Prolog之间有很大区别。答案是否需要clpfd
?你在问题中没有明确地说。我这样问是因为没有clpfd
,这要容易得多。CLP(FD)(如#=
)只用于对整数进行推理。因此“域错误”。修复没有clpfd,对不起!您需要预先注意,这是在使用clpfd
。Prolog和带有clpfd的Prolog之间有很大区别。答案是否需要clpfd
?你在问题中没有明确地说。我这样问是因为没有clpfd
,这要容易得多。CLP(FD)(如#=
)只用于对整数进行推理。因此“域错误”。修复没有clpfd,对不起!在我解决问题时,你一定要回答(在我解决问题时,你一定要回答(