Prologを使用する必要がある学校のプロジェクトがあります。これは私にとってすべて新しいことなので、いくつかの問題があります。
次のようなリストがあります。
List = [(_,_,_),(_,_,_),(_,_,_)]
作成しなければならないいくつかの述語を通じて、各メンバーに関する入力情報を受け取ることになっています。
そのうちの 1 つは次のタイプです。
predicate(M1,M2,M3, List)
また、M1 は M2 または M3 のいずれかであり、両方ではないことが示されています。例えば、
predicate((_,a,_),(2,_,_),(3,_,_),List)
「a」を持つメンバーは、最初のフィールドに 2 または 3 があることを示します。
私は一晩中試してみましたが、解決策が思いつきません。統合を使用する必要があると思いますが、その方法がわかりません。
私はこれを試しました:
predicate(M1,M2,M3,[_]) :- (M1=M2), not(M1=M3).
predicate(M1,M2,M3,[_]) :- (M1=M3), not(M1=M2).
これはばかげているように見えるかもしれませんが、私が言ったように、Prolog は私にとってまったく新しいものであり、その機能を完全に把握することはできません。
どんなヒントでも大歓迎です。ありがとう!
編集:
例:
person(name,age,job).
List = [(einstein,_,_),_,_].
これで、アインシュタインが最初の 3 人のリストができました。
predicate = ((einstein,_,_),(_,87,_),(_,23,_), List).
List = [(einstein,87,_),_,_)];
List = [(einstein,23,_),_,_)].
これらは、述語を適用した後に受け入れられる 2 つのリストです。
それは簡単な問題のはずですが、私には理解できません。
ありがとう!