您好,有什么方法可以将 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/