2012-01-05 13 views
0

私は、リストを事実と比較することができるPrologの述語を開発する必要があります。言い換えれば、リストに存在する製品の名前がす​​べてデータベースにある場合(実際には)、「はい」と答えなければならず、そうでなければ「いいえ」と言います。 述語は明らかに製品名のリストを受け取ります。 現時点では、私はこのコードを持っています。リストとデータベースをチェックする[Prolog]

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

これまでに書いたことの問題は何ですか? –

+0

ほぼ完璧に動作します。唯一の問題は、その事実のすべての製品を検証しないということです。リストにデータベースよりも少ない製品が含まれているかどうか、述語は「はい」と回答します。 – mkll

答えて

0

チェックの基本ケースは、製品名を文字列ではなくリストとして検索します。

関連する問題