list - 编写一个判断列表是否按升序排列的谓词
问题描述
我得到以下谓词:
q8([]):-
q8([X]):-
q8([H|T]):-
需要提供以下输出
q8([2, 5, 8, 8, 8, 9]).
true.
q8([8, 5, 2, 8, 9]).
false.
我的尝试是:
q8([]):-true.
q8([X]):-true.
q8([H|T]):- H<T, q8(T).
然而这失败了,因为它试图将tail
我的列表统一到q8([X])
只允许一个元素。我不太确定如何解决这个问题。
为了更清楚,如果你运行q8([2,5,8,8,8,9])
. 我收到一个错误,因为[5,8,8,8,9]
无法与X
. 它永远不会到达第三个定义的q8 predicate
。
我正在为我的期末做练习题,所以你们不帮忙做作业!哈哈
解决方案
q8([]):-true.
q8([_X]):-true.
q8([H1,H2|T]):- H1=<H2, q8([H2|T]).
对于第三个子句,您需要查看列表中的前两个元素,然后您需要使用小于或等于,最后您需要递归保留您取出的第二个元素。
推荐阅读
- java - 使用 @SecondaryTable 创建单个实体使完全联接而不是内部联接 JPA 休眠
- odoo - 将字段自定义从采购订单行复制到odoo中的库存移动
- javascript - 如何删除此错误消息:“TypeError: Cannot read property 'seconds' of undefined”?
- r - 使用 {betareg} 在 R 中引导 Beta 回归模型时出错
- javascript - Click() 函数在 wordpress Javascript 中不起作用
- sql - 检查条件是否为真,如果是,则将值添加到 sql 中的另一列
- javascript - 将 Slick 轮播水平箭头更改为带有字体真棒箭头的向上和向下箭头
- jquery - 如果使用角度选择的下拉值是空白的,如何添加错误验证
- android - 从实时视频中提取视频帧以在 android 中进行实时面部地标分析
- python-3.x - 如何在 tensorflow 中使用 GTX 1660 超级 GPU?