2017-10-06 14 views
1

それでは、私が探していますと、これは基本的には次のとおりです。特定の原子の最初の存在が見つかったリストのリストでリストを見つけるにはどうすればよいですか?

findatom(A, L, NL), 
with inputs: 
A = -, %sought after atom 
L = [[1,2,3], [2,-,3], [1,2,3]] %list of lists 
and then it outputs: 
NL = [2,-,3] %the first list containing the sought after atom 

どのようにこれは可能でしょうか?私はこれを試しました:

これは、リストのリストではなく、原子のリストが存在する場合にのみ機能します。これをリストのリストのために機能させるために私はどのように拡張できますか?

+0

appendは最も驚くような方法で使用できますが、これを使用する理由を完全にはわかりません。 –

答えて

1

findatom(A, L, NL)NLLに、Aが含まれています。これらの単語をPrologの述語で置き換えましょう。ANLのメンバーであるように、member LのNLが見つかりました。

findatom(A, L, NL) :- 
    member(NL, L),  % find an item NL in L 
    memberchk(A, NL). % that contains A 

ここmemberchkを使用してのプロは、それが決定的であるということですので、あなたは、複数のスプリアスのソリューションを心配する必要はありません。