2011-05-13 10 views
-1

私はプロローグの新機能です。この問題を解決するために私を助けてください。プロローグに関する挑戦的なリストの質問

試験(math、paul)

試験(phys、paul)

試験(cmpe、sofia)

試験(bio、george)

述語otherExam(L、N)を実装したいと思います。 Lはレッスンであり、NはL.

otherExam(math、X)の生徒が所有するすべてのレッスン(Lを除く)のリストです。 [phys]

otherExam(cmpe、X)を返します。返品[]

otherExam(chem、X)返し偽(そのようなレッスン)

otherExam(数学、[PHYは】)真

otherExam(X、[のPHY])を返しません。数学を返します

私はこの問題に悩まされました。あなたは私を助けている場合、私は(

+1

あなたが試したことを示したらそれは助けになります。 – zellio

答えて

0

チェックfindall/3select/3

のfindAll/3は、クエリ例えば
、findAllの(X、祖先からのすべての可能な結果を​​得るために使用される):)とても幸せになりますX、paul)、L)はXのようなすべてのXを見つけるでしょう。Xはポールの祖先であり、リストに入れますL

+0

OK。実際に私はあなたが何を意味するかを見ます。 私はそれのようにsthをしなければなりません。 (L、Ts、N)を選択してください。(L、T、N):findall(T、(T、_、_、) しかし、私は人が2つの試験を持っているかどうかを確認できませんでした:( – trwee

+0

人が1つの試験だけを持っていればリストNは空になります他の試験がなければ述語otherExam/(L、レッスン、リスト)、not_empty(リスト)を選択してください。 not_empty([リスト内に少なくとも1つの要素が存在することを保証します。 –

+0

申し訳ありませんが、私はこのコードで 'N'を使用するはずです:( – trwee

関連する問題