Prolog 成员谓词可能性规则
Prolog member predicate possibilities rule
一份高级披萨恰好包含 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.
我定义了以下规则,但它 returns 错误而不是可能的配料组合。
香肠重量和整个比萨的重量都使用了S
。
一份高级披萨恰好包含 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.
我定义了以下规则,但它 returns 错误而不是可能的配料组合。
香肠重量和整个比萨的重量都使用了S
。