在prolog中列出值

时间:2017-04-26 17:02:34

标签: prolog

有以下变量:

colour(blue).
colour(red).
colour(green).

size(small).
size(medium).
size(large).

price(10).
price(25).
price(40).

我想制作一个列表,它将返回所有可能的组合。类似的东西:

list=([colour(X),size(X),price(X)]).

有可能吗?

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解正确,但您可以尝试:

find_comb(L):- findall((X,Y,Z), (colour(X), size(Y), price(Z)) , L).

以上使用findall/3谓词来收集所有可能的组合并将其存储在L。

示例:

    ?- find_comb(L).
    L = [ (blue, small, 10), (blue, small, 25), (blue, small, 40), (blue, 
    medium, 10), (blue, medium, 25), (blue, medium, 40), (blue, large, 10), 
    (blue, ..., ...), (..., ...)|...].

根据您的评论,要查看没有“...”的完整答案,您可以添加:

?- set_prolog_flag(answer_write_options,
                   [ quoted(true),
                     portray(true),
                     spacing(next_argument)
                   ]).