我必須找到列表中給定元素的所有索引並將其作爲列表返回。因此,例如:Prolog - IndexofElement
?- indexList(a,[a,b,c,a,b],Rs).
Rs = [0,3]
我的想法是:
positions(E, L, P) :- positions(E, L, 0, Rs).
positions(E, [], _, []).
positions(E, [E|Xs], P, [P|PT]) :- P1 is P + 1, positions(E, Xs, P1, PT).
positions(E, [X|Xs], P, PT) :- P1 is P+1, positions(E, Xs, P1, PT).
當我跟蹤這個我得到一個列表,其中每個位置是(在最後一步之前的步驟)。但是在最後的幾步中,他以某種方式改變了它,並且返回正確。
gusbro的觀察,關於E是比X不同的檢查,只需要當你要求超過只是第一個解決方案,無論哪種情況都是正確的。試着在沒有修改的情況下運行你的代碼,看看會發生什麼。 – Mihai 2012-07-10 16:19:01