Prolog 分隔列表

标签 prolog

您好,有什么方法可以将 Prolog 中的列表分成另外两个列表,第一个列表包含元素之前的所有内容,第二个包含元素之后的所有内容。例如

A=[1,2,3,5,7,9,0] and element=5 

这两个列表应该是

A1=[1,2,3] and A2=[7,9,0]

我不关心找到元素,只关心下一步做什么

最佳答案

很简单

?- Elem = 5, A = [1,2,3,5,7,9,0], append(A1, [Elem|A2], A).

编辑来解释一下...

append/3 这是 3 个列表之间的关系

它足够通用,可以解决适当列表上的任何串联 - 当没有循环参数时。

比较是一个简单的统一,发生在第二个参数上。那一定是一个以 Elem 开头的列表。 Prolog 列表构造函数语法为[Head|Tail]。为了使统一成功,Elem 必须匹配 Head。

关于Prolog 分隔列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21876095/

相关文章:

Python:pyswip 输出返回 Atom 和 Functor

lambda - 将 maplist 与没有主体的 lambda 一起使用?

prolog - swi-prolog 中的字符串和列表处理

linux - 什么是适用于 Linux 的好的 Prolog IDE?

Prolog HTTP动态添加html链接

prolog - 错误 : Undefined procedure: (:-)/2

prolog - GNU 序言 : Displaying WAM code for query?

prolog - 在 Prolog 中创建一个规则,cubeLess(X,B,R),计算 3 的幂和余数,使得 b =x3+r

recursion - Prolog中的统一算法可以无限递归吗?

prolog - 这个序言输出想表达什么?