0

问题是我需要编写一个能够查询数据库中产品的谓词,以便它返回一个列表,其中包含其价格降低的产品名称(由“状态”表示。

domains
    state =  reduced ; normal
    element = string
    list = element*
database
    producte (string, integer, state)
predicates
    nondeterm reduced(list)
clauses 
   % ---> producte( description , price , state )
    producte("Enciam",2,reduced). 
producte("Peix",5,normal).
producte("Llet",1,reduced). 
producte("Formatge",5,normal).
    %unique case
    reduced([D]):-
         producte(D,_,reduced).
    %general case
    reduced([D|L]) :- 
         producte(D,_, reduced),retract(producte(D,_,reduced)),reduced(L).
Goal
    reduced(List).

我很感激。现在,它给了我三种不同的解决方案。我怎么能强迫谓词给我一个解决方案?事实上,最后一个?

4

2 回答 2

0

由于我不使用visual-prolog,我将提出一些我在 doc 中找到的内容

reduced(List) :-
    List = [ Price || producte(_, Price, reduced) ].
于 2012-01-05T18:00:56.720 回答
0

当列表中的第一个产品没有减少时怎么办——你没有这种情况的规则。

于 2012-01-05T19:38:57.410 回答