我想返回一個(gè)列表,例如刪除所有唯一元素的列表remUniqueVals([1,1,2,2,3,4,4,5,6,6,6],Q). Q = [1,1,2,2,4,4,6,6,6]. 我的問(wèn)題是目前我有返回的代碼remUniqueVals([1,1,2,2,3,4,4,5,6,6,6],Q). Q = [1, 2, 4, 6, 6].這樣就只返回這些非唯一值的第一個(gè)實(shí)例。這是我的代碼:remUniqueVals([], []). remUniqueVals([Q1|RestQ],[Q1|Xs]) :- member(Q1,RestQ), remUniqueVals(RestQ,Xs). remUniqueVals([Q1|RestQ],Xs) :- remove(Q1,[Q1|RestQ], NewQ), remUniqueVals(NewQ,Xs). 我可以看到member(Q1,RestQ)它在第二次檢查1,2,4時(shí)失敗,因?yàn)樗鼈儸F(xiàn)在不再在列表中,因此將其刪除。我想幫助解決這個(gè)問(wèn)題,我的想法是檢查member(Q1, PreviousQ),這是決賽中已經(jīng)存在的要素Q。不確定如何實(shí)施,盡管會(huì)有所幫助。更新:好的,謝謝您提出的建議,最后我最終提出了以下建議:remUniqueVals(_,[], []). remUniqueVals(_,[Q1|RestQ],[Q1|Xs]) :- member(Q1,RestQ), remUniqueVals(Q1,RestQ,Xs). remUniqueVals(PrevQ,[Q1|RestQ],[Q1|Xs]) :- Q1 = PrevQ, remUniqueVals(PrevQ,RestQ,Xs). remUniqueVals(PrevQ,[_|RestQ],Xs) :- remUniqueVals(PrevQ,RestQ,Xs). remUniqueVals(0,[4,1,1,3,2,2,5,5],Q).Q = [1, 1, 2, 2, 5, 5].remUniqueVals(0, [A,B,C], [1,1]).A = 1,B = 1,C = 1.
- 3 回答
- 0 關(guān)注
- 588 瀏覽
添加回答
舉報(bào)
0/150
提交
取消