给定一个列表(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 个元素,这只是一个基本示例。与此比较一起,您可以生成其他列表