如何在prolog中一次比较一个列表的元素3

时间:2017-05-26 16:41:05

标签: prolog

给定列表(A)我希望能够创建一个新列表(B),其中仅包含与其下一个和上一个元素相比最小或最大的A元素。我的问题是我不知道如何将每个元素与之前的元素进行比较。 (这个问题可能很愚蠢,但我是prolog的新手,任何帮助都会受到赞赏。)

1 个答案:

答案 0 :(得分:2)

你可以从类似的东西开始:

compareElem([]).
compareElem([H,H1,H2|B]):-compareElem(B), 
                          compare(?Order, H1,H2),
                          compare(?Order, H1, H).

在哪里?订单是比较的顺序(如'<'或'>')。请参阅compare/3

一些疑问:

?- compareElem([1,2,3,4,5,6]).
true.

?- compareElem([1,2,3,4,5,3]).
false.

当然要应用这个例子,你必须确保列表有3n个元素,这只是一个基本的例子。与此比较一起,您可以生成其他列表