我是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。任何人都可以解释从哪里开始吗?