首页 > 解决方案 > 如何仅使用追加检查列表中是否至少出现两次元素?- 序言

问题描述

我有一个任务,我必须定义一个名为 two(X,L) 的谓词,如果列表 L 包含至少两次出现的元素 X,则仅使用附加谓词,这是正确的。我的任何规则的右侧可能只使用附加,或使用谓词二(X,L)。例如,我想要的输出看起来像这样。

two(x,[a,a,b,a,c,b,a]).
X = a
X = b

two(c,[a,a,b,a,c,b,a]).
FALSE

我一直在想办法做到这一点,但根据我对 append 的了解,我们可以真正在two(X,L)is中使用的唯一谓词append(X,X,L)。Append 不是真/假,它只是尝试将 X 放入 L 中两次。

我不需要有人为我解决任务,我只需要一块垫脚石,因为我对如何仅使用 append 来完成这项任务感到困惑。

标签: prolog

解决方案


two(X,List):-append(_,[X|Rest],List),append(_,[X|_Rest2],Rest).

推荐阅读