我给出了以下谓词:
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
统一。它永远不会到达第三个定义的[err] /home/vcap/app/wlp/usr/servers/projectname/resources/chromedriver: 1: /home/vcap/app/wlp/usr/servers/projectname/resources/chromedriver: Syntax error: Unterminated quoted string
。
我为我的决赛做练习问题,所以你们不帮助做作业!洛尔
答案 0 :(得分:1)
q8([]):-true.
q8([_X]):-true.
q8([H1,H2|T]):- H1=<H2, q8([H2|T]).
对于第三个子句,你需要查看列表中的前两个元素,然后需要使用小于或等于,最后你需要递归保持你起飞的第二个元素。