私はPrologには比較的新しいので、私に同行してください。 same(P1, P2, H)
は本当だろうリストを比較する述語を作る?
hobbies(mark, [running, video_games, soccer])
hobbies(jasmine, [writing, swimming, music])
hobbies(john, [rugby, rowing, pets, politics])
hobbies(lisa, [gymnastics, dancing, television])
私は今何をしたいか、述語を定義している(のはsame
それを呼びましょう):私は、それぞれ1人が含まれており、どのような彼らの趣味は(リストに)していることは事実を持っていると言いますP1
とP2
に趣味がある場合はH
が共通です。私はメンバー述語を使用する必要があることを知っていますが、これまで単純なケースでそれを使用する方法を学んだだけです。
same(P1, P2, H) :- member(H, P1), member(H, P2)
もちろん、私はそれができないことを知っています。それらの事実の中でリストにアクセスするにはどうすればいいですか?
'メンバー(H、P1)は '意味がありません。ある人物について、「P1」と言うと、趣味のリストはどのような関係で定義されていますか?そして、あなたはそれらを変数、例えば 'HobbyList1'にどのように入れますか?そうすれば 'メンバー(H、HobbyList1)'と言うことができます。 – lurker