给定列表(A)我希望能够创建一个新列表(B),其中仅包含与其下一个和上一个元素相比最小或最大的A元素。我的问题是我不知道如何将每个元素与之前的元素进行比较。 (这个问题可能很愚蠢,但我是prolog的新手,任何帮助都会受到赞赏。)
答案 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个元素,这只是一个基本的例子。与此比较一起,您可以生成其他列表