Prolog成员谓词可能性规则

时间:2016-11-27 07:54:32

标签: list prolog member

优质比萨饼由恰好40盎司的浇头组成。每个顶部可以有多个条目,只要总重量等于40盎司。

Pepperoni           4 
Sausage             10
Bacon               6
Onion               5
Mushroom            7

例如,比萨饼可以包含1个意大利辣香肠浇头,2个香肠配料,1个浇头 培根和2份洋葱配料:1*4 + 2*10 + 1*6 + 2*5 = 40(盎司)

披萨不能包含7种培根配料:7 * 6 = 42 > 40A披萨不能只含3份香肠配料:3*10 = 30 < 40

定义规则pizza(P, S, B, O, M)以找出每个顶部可以包含的数量 在披萨上,其中P, S, B, O, and M是意大利辣香肠,香肠的重量(以盎司计), 培根,洋葱和蘑菇浇头分别。

pizza(P,S,B,O,M):-
member(P,[0,1,2,3,4,5,6,7,8,9,10]),
member(S,[0,1,2,3,4]),
member(B,[0,1,2,3,4,5,6]),
member(O,[0,1,2,3,4,5,6,7,8]),
member(M,[0,1,2,3,4,5]),
S is 4*P + 10*S + 6*B + 5*O + 7*M,
S =:= 40.

我已经定义了以下规则,但它返回false而不是可能的浇头组合。

1 个答案:

答案 0 :(得分:0)

您正在使用S来获取香肠重量和整个披萨的重量。