hill(+ IntList)は、IntListが単調に増加する>整数とそれに続く単調に減少する整数で構成されている場合に成功します。たとえば、> [1,2,5,8,11,6,3、-1]は丘ですが、[1,2,5,8,11,6,9,3、-1]と[1 、2,3,4,5,6]は丘ではありません。IntListには整数のみが含まれていると想定できます。
これは私がこれまでに行ったことです:
hill(List) :-
increasing(List), decreasing(List).
increasing([H|Tail]) :-
sm(H,Tail),
increasing(Tail).
increasing([]).
decreasing([H|Tail]) :-
gr(H,Tail),
decreasing(Tail).
decreasing([]).
hill([]).
gr(X,[H|Tail]) :- X>H.
gr(X,[]).
sm(X,[H|Tail]) :- X<H.
sm(X,[]).
しかし、これは機能しません。論理は次のとおりです。数値のリストは、そうである場合はhillそれ以降です。どう言うの?このコードはとを行いますが、リストをとの両方にすることはできません。increasingdecreasingincreasingdecreasingincreasingdecreasing
何か案は?