findThree([H|T],_,3).
findThree([H|T], M, Z):-
(member(H,M)
-> Z2 is Z + 1,
select(H,M,C),
findThree(T,C,Z2)
;select(H,M,C),
findThree(T,C,Z)
).
私がやっていることは、要素が指定されたリストにあるかどうかを確認することです。そうであれば、変数を増やして3つ見つけたら停止します。しかし、私の構文には問題がありますか? SWI-PrologでIf-else構文を使用しようとしています。それが問題だろうか?Prologでこの述語に問題がありますか?
私はプロローグについてあまり知らないが、私は「変数をインクリメントすると、」あなたが行うことができない何かであることを知っています。もっと宣言的なアプローチを試してみてください(それはあまり役に立ちません)。 – luqui