我需要在prolog中定義一個謂詞,它將一個列表作爲輸入並將數字的平方和> = 5並減去數字的絕對值之和< = 2。prolog中的謂詞
這是我目前: -
pred([], 0).
pred([Head|Tail], Result) :-
gr85(Head),
pred(Tail, Total),
Result is Head*Head + Total.
pred([Head|Tail], Result) :-
leq2(Head),
pred(Tail, Total),
Result is Total - Head.
gr85(Number):-
Number >= 5.
leq2(Number):-
Number =< 2.
我的問題是如何排除2和5之間的任何東西,如果我在列表中輸入3,返回false。
預期輸入
pred([3,6,2,-1], Result).
預計輸出
Result= 33 (6*6 -2-1)
我不是很確定,但也許應該是6 * 6 - 2 - (-1)= 35? –