一袋弹珠的重量
Weight of marbles in a bag
所以我们才刚刚开始学习序言,我很难全神贯注于序言。我们的家庭作业遇到了这个问题,我只是不知道从哪里开始。
定义一个规则weight(R, O, Y, G, B)
,求出每个袋子里每种颜色的弹珠的数量,其中R, O, Y, G
,B
分别是红色、橙色、分别是黄色、绿色、蓝色弹珠。弹珠的重量分别为 1, 2, 3, 4, 5
克。假设袋子的大小足以容纳总重量为 30
克的所有弹珠。
如果你打算只解决(比方说)黄色弹珠的问题,它可能看起来像这样:
weight(Marbles, Weight) :- Weight #= Marbles * 3.
然后如果你想看看你有多少黄色弹珠,你可以像这样查询 Prolog:
?- weight(Marbles, 30).
Marbles = 10.
你能从这里概括一下吗? :)
编辑
您的问题可以通过提供域来解决。
weight(R,O,Y,G,B,Weight) :-
[R,O,Y,G,B] ins 0..sup,
Weight #= R + O*2 + Y*3 + G*4 + B*5.
当您调用谓词时,您将得到域形式的答案。这通常不是我所期望的,因此调用 label/1
将生成解决方案。
?- weight(R,O,Y,G,B,30), label([R,O,Y,G,B]).
R = O, O = Y, Y = G, G = 0,
B = 6 ;
R = O, O = Y, Y = 0,
G = 5,
B = 2 ;
等等
所以我们才刚刚开始学习序言,我很难全神贯注于序言。我们的家庭作业遇到了这个问题,我只是不知道从哪里开始。
定义一个规则weight(R, O, Y, G, B)
,求出每个袋子里每种颜色的弹珠的数量,其中R, O, Y, G
,B
分别是红色、橙色、分别是黄色、绿色、蓝色弹珠。弹珠的重量分别为 1, 2, 3, 4, 5
克。假设袋子的大小足以容纳总重量为 30
克的所有弹珠。
如果你打算只解决(比方说)黄色弹珠的问题,它可能看起来像这样:
weight(Marbles, Weight) :- Weight #= Marbles * 3.
然后如果你想看看你有多少黄色弹珠,你可以像这样查询 Prolog:
?- weight(Marbles, 30).
Marbles = 10.
你能从这里概括一下吗? :)
编辑
您的问题可以通过提供域来解决。
weight(R,O,Y,G,B,Weight) :-
[R,O,Y,G,B] ins 0..sup,
Weight #= R + O*2 + Y*3 + G*4 + B*5.
当您调用谓词时,您将得到域形式的答案。这通常不是我所期望的,因此调用 label/1
将生成解决方案。
?- weight(R,O,Y,G,B,30), label([R,O,Y,G,B]).
R = O, O = Y, Y = G, G = 0,
B = 6 ;
R = O, O = Y, Y = 0,
G = 5,
B = 2 ;
等等