在Prolog中,如何使用成员谓词来确定最佳组合?

时间:2013-12-03 16:53:18

标签: prolog

我是Prolog的新手,并且发现我花了大部分时间在Java和C ++上时非常困惑。我的任务是根据类型,卡路里和价格找到不同的快餐组合:

burger 450 $5 
fries 250 $2 
shake 500 $3 
salad 150 $7

我需要定义规则:

findfood(Calories, Price, Burger, Fries, Shake, Salad).
汉堡,薯条,奶昔和沙拉可以是0或1,具体取决于是否购买。然后,我需要定义一个规则,以便您可以找到最昂贵的组合(是的,昂贵的。显然我喜欢在食物上花很多钱)而不会超过一定的卡路里量。

我对会员/规则如何在这里发挥很困惑。我在互联网上找到了一些例子,但它们似乎并不适用,因为食物有自己的价值,而不仅仅是它们是否被购买。

我不希望有人为我编写我的程序,但任何人都可以指点我的写作方向吗?我甚至不知道从哪里开始,这非常令人沮丧...

- 编辑 -

使用下面的评论,我能够完成第一部分,找到食物,并找出如何设置成员来处理正在购买的物品并计算卡路里和价格。现在我需要找到低于或等于一定卡路里量的最昂贵的食物组合。我被允许创建多个规则来执行此操作。它应该是这样的:

|?- most_expensive(1000, Price, Burger, Fries, Shake, Salad)

它将返回1000卡路里最昂贵的食物组合。我知道我需要进行某种递归比较,但我不确定如何继续。为了记录,我很了解递归,只是不是Prolog。任何人都可以解释从哪里开始吗?

0 个答案:

没有答案