2012-01-05 3 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

확인을위한 기본 사례는 제품 이름을 문자열 대신 목록으로 찾습니다.