prolog - 如何仅使用追加检查列表中是否至少出现两次元素?- 序言
问题描述
我有一个任务,我必须定义一个名为 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 来完成这项任务感到困惑。
解决方案
two(X,List):-append(_,[X|Rest],List),append(_,[X|_Rest2],Rest).
推荐阅读
- javascript - 已看到但未加载的 Javascript gem
- tor - Tor 如何为现有站点创建洋葱镜像链接
- java - 无法从 String.EqualIgnoreCase 比较中获得结果
- reactjs - Material-UI:如果屏幕足够大,则并列选项卡
- lua - 即使没有任何错误和正确的功能,触摸也不起作用
- python - AttributeError:“GridLayout”对象没有属性“print_text”
- python - 在python中将列表转换为字典
- php - 为什么我的 sql-stament 没有将数据插入到我的数据库中?
- angular - 两个表具有相同的分页值:ngx-pagination
- vue.js - vuex突变后变量未更新