2016-04-30 14 views
0

リストを比較することによって、リスト内の特定の要素を見つける述語を書きたいと考えています。私はメンバーを使用するか選択しようとしてきたので、私はちょうど、誰かがこのような何かがうまくいく方法を説明したいリストを含むプロローグ述語

likes(phil, [apple, banana, orange]). 
likes(hetti, [apple, cherry, grapes]). 
など

:たとえば、私は、インスタンスのために持っている可能性があり、データは次のように可能性があり;これについての情報を見つけることはより難しいようです。パターンマッチングを使用できますか?

+2

*リストを比較して、リスト内の特定の要素を検出します。* ...これが何を意味するかは不明です。 – lurker

+0

あなたが配置したいクエリを普通の英語で定式化してください。 – false

答えて

0

普通の好きなものがphilhettiの間にあることを知りたいと思われる可能性があります。その場合、コードは

?- bothlike(phil, hetti, Ls), write(Ls), nl. 

bothlike(X, Y, Ls) :- 
    likes(X, Xs), 
    likes(Y, Ys), 
    intersection(Xs, Ys, Ls). 

likes(phil, [apple, banana, orange]). 
likes(hetti, [apple, cherry, grapes]). 

intersection([], _, []). 
intersection([H1|T1], L2, L3) :- 
     member(H1, L2), 
     !, 
     L3 = [H1|T3], 
     intersection(T1, L2, T3). 
intersection([_|T1], L2, L3) :- 
     intersection(T1, L2, L3). 

です。回答は[apple]です。

+0

ありがとう非常に:) – BBKING

関連する問題