1
我有一個謂詞next
實質上是從列表中刪除數字,試圖減少列表的整體大小。刪除重複在回溯
因此,例如,我有一個列表:
[3,2,1]
接下來會從列表中刪除某些值,所以它會返回類似這樣
[3,2] or [3,1] or [3] or [2,1] etc
我運行一個腳本找到所有可能的動作:
findall(T, next([2,3], T), U).
問題是重複值的列表,如:
L = [1,1,1,1].
通話
findall(T, next([1,1,1,1], T), U).
將統一U
與[[1,1,1], [1,1,1], [1,1,1], [1,1,1]]
有沒有辦法讓Prolog的理解,它是相同的輸出多次回國?
next([_ | T], T).
next([H | Tin], [H | Tout]) :-
next(Tin, Tout).
該做到的,但它是一個有點哈克修復,我期待在未來謂詞 – user3667111
的改變@ user3667111 - 如果你要求改變它,你應該告訴我們你的'下一個/ 2' – max66
當然,我已經添加到編輯 – user3667111