序言中的谓词 [英] Predicate in prolog

查看:47
本文介绍了序言中的谓词的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在 prolog 中定义一个谓词,它将一个列表作为输入,并对大于等于 5 的数字的平方求和,然后减去小于等于 2 的数字绝对值的和.

I need to define a predicate in prolog which takes a list as input and sums the squares of numbers >= 5 and subtract sum of absolute value of numbers <=2.

这就是我目前所拥有的:-

This is what I have currently :-

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.

My question is how do I exclude anything between 2 and 5. If I input 3 in the list, it returns false.

预期输入

pred([3,6,2,-1], Result).

预期输出

Result= 33 (6*6 -2-1)

推荐答案

添加跳过所有"子句:

weird_sum([_|Tail], Result) :- weird_sum(Tail, Result).

我认为当您分析应该添加该子句的哪里时,您会对 Prolog 的工作有一些了解.

I think you will gain some insight into Prolog working when you analyze where this clause should be added.

这篇关于序言中的谓词的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆