我有這樣的數據結構的列表,其中的元素始終是唯一的:查找元素的索引中列出
[[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'嗎?如果你使用的是Prolog實現,你可以用它來代替你的'indexOf_single/3'。它也有可能是'nnth/3';然後使用'n(Index1,List,Element),succ(Index,Index1)'。 – 2016-11-30 10:31:06