有以下变量:
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)]).
有可能吗?
答案 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)
]).