リストのリスト内の要素のインデックスを見つけるところの要素は常にユニークである:私はこのデータ構造を持っている
[[a,b,c], [d,e,f], [y,z]]
さて、私は要素のインデックスを取得するための手順を書きたい、私を言います持っている:
indexOf([[a,b,c], [d,e,f], [y,z]], a, H)
とH
は0
です。または:
indexOf([[a,b,c], [d,e,f], [y,z]], f, H)
とH
は2
です。
indexOf_single([X|_],X,0).
indexOf_single([_|T],X,H) :- indexOf_single(T,X,H1), H is H1 + 1.
indexOf([T],X,H) :- indexOf_single(T,X,H).
indexOf([Head|Tail],X,H) :- indexOf_single(Head,X,H),indexOf(Tail,X,H).
しかし、私はfalse
すべての時間を取得しています:
これは私が持っているものです。あなたはそれを解決するための手がかりを私にくれてもらえますか?
何が失敗するのか知っていますか?それはどちらの述語ですか?そして、あなたは 'nth0/3'について知っていますか?あなたが 'indexOf_single/3'を置き換えるために使うことができます。 'nth/3'を持つことも可能です。 'nth(Index1、List、Element)、succ(Index、Index1)'を使います。 –