prolog - 如何使用 prolog 定义删除(X,L1,L2)关系,其中 L2 是结果列表,其中项目 X 从列表 L1 中删除

标签 prolog

(1) 如何使用 Prolog 定义 delete(X,L1,L2) 关系,其中 L2 是其中项目 X 的结果列表code> 已从列表 L1

中删除

(2)如何绘制推导树来回答以下查询?

| ?- delete(3,[4,10,6,8,1,3,9],L)

my attempt

最佳答案

保存通过使用 tfilter/3并具体化不平等dif/3 :

?- tfilter(dif(3),[      4,    10,6,8,1,3,9],[4,10,6,8,1,9]).
true.
?- tfilter(dif(3),[3,3,3,4,3,3,10,6,8,1,3,9],[4,10,6,8,1,9]).
true.

请注意,这对于非基础术语也同样有效!

?- tfilter(dif(Y),[A,B],Xs).
Xs = [   ], Y = A,    A = B    ;
Xs = [  B], Y = A,    dif(A,B) ;
Xs = [A  ], Y = B,    dif(B,A) ;
Xs = [A,B], dif(Y,B), dif(Y,A).

关于prolog - 如何使用 prolog 定义删除(X,L1,L2)关系,其中 L2 是结果列表,其中项目 X 从列表 L1 中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29957190/

相关文章:

list - 在 Prolog 中将元素附加到列表的开头

math - 将罗马数字翻译成阿拉伯数字

对原子的子类进行分类的序言错误

prolog - 帮助学习 Prolog

prolog - 如何确定两个命题公式在 Prolog 中是否等价?

prolog - 前言:失败驱动循环

numbers - Prolog:除一个数

Prolog谓词调用

初学者序言

prolog - 康威生命游戏最简洁的序言实现是什么?