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



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

你可以从这样的东西开始:

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

哪里?顺序是比较的顺序(如"<"或">"(。请参阅比较/3。

一些查询:

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

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

最新更新