检查Prolog中的串联

时间:2012-08-27 14:05:22

标签: list prolog

这是另一个我目前无法解决的序言任务。我必须写一个谓词p(X,Y),其中X是数字列表的列表,Y是数字列表。谓词必须验证:

1)如果X可以表示为来自Y的2个元素之间的串联。 2)X具有奇数个元素。 3)X中所有元素的总和是Y中的最后一个元素。

也许作为一个单独的任务2,3可以写得轻松。问题出在1)

提前谢谢你。我很遗憾发布这么简单的任务,但prolog真的让我发疯。我一遍又一遍地阅读了所有的文章。但情况类似于此: 学校:3 + x = 5,x =? 考试:cos(x + y + z)+ lim(5x + y)/ t = ....如果你知道我的意思。再次感谢你!

1 个答案:

答案 0 :(得分:2)

检查连接是使用append/3来完成的,append(A,B,C)更常用于构建它们,但是像许多Prolog谓词一样,“在相反的方向”工作。更具体地说,C会检查ABmember(A, Y), member(B, Y), append(A, B, X) 的串联。所以,

A

检查Y中的元素BY中的元素X是否与A统一。

(请注意,检查BY <{1}}的元素。)