リストM = [[1/4,2/2,3/5,4/3,5/1]、[1/3 、2/5,3/2,4/4,5/1]、[1/5,2/3,3/3,4/4,5/2]、[1/4,2// 3、4/5、5/2]、[1/5、2/2、3/4、4/1、5/3]、[1/1、2/4、3/2、4/5 、5/3]、[1/2,2/5,3/3,4/1,5/4]、[1/1,2/3,3/5,4/2,5/4] [1/3、2/1、3/4、4/2、5/5]、[1/2,2/4/4、3/1、4/3、5/5]]。Prolog - リストに特定のアイテムが含まれているかどうかを確認する方法
特定のアイテム(3/5など)を含むリストのリストのみを返したいとします。
私はのように見える機能書いてみました:Fは、その中に3/5を持つリストが含まれているように、私はピック(M、3,5、F)を照会することができるように
include([X/Y|Rest],I,J):-
X=:=I,
Y=:=J,
include(Rest,I,J).
pick([Item|Rest],I,J,Final):-
include(Item,I,J),
pick(Rest,I,J,[Item|R]).
を。私が書いた機能が正しく動作しない、それを修正するのを手伝ってもらえますか?
リストにメンバーが含まれているかどうかを確認するには、 'memberchk/2'を使用します。 'I/J'が' Item'のリストにある場合、 'memberchk(I/J、Item)'は成功します。あなたの 'include/3'述語には基本的なケースはなく、与えられたリストのすべての*要素が' I/J'であることを保証しようとするので、常に失敗します。 – lurker