2016-03-02 60 views
2

1 < X < Y and X + Y <= 100. S = X + Y P = X * Y .如何生成prolog中的四元組列表?

將綁定Q以列表的目標s1(Q,100)四倍[X, Y, S, P],其中 S = X + YP = X*Y

我想有一個答案,例如 Q = [[3,4,7,12],[2,6,8,12], ....]

請幫助,新序言。

回答

1

例如在GNUProlog(或任何其它具有between/3):

?- findall([X, Y, S, P], (between(1,100,X),between(1,100,Y),1<X,X<Y,S is X+Y,S=<100,P is X*Y),L). 
+0

你可以優化它一點:'(2100,X)之間,X 1是X + 1,(X1之間, 100,Y),S是X + Y,...。意識到這「隱藏」了一些約束條件,而不是讓它們變得可見/明確...... – lurker

+0

@lurker:當然,但我認爲儘可能簡單的事情對於新手來說可能很重要。 (順便說一下,我也會用CLP(FD)) – CapelliC

+0

是的,我明白了。我同意CLP(FD),這是我在評論中的原始建議,但猜測OP並不想冒險進入該圖書館。 – lurker