當我使用的Prolog的內部謂詞「減/ 3」:在例如減(+套裝,+刪除,-Result):序言 - 減去每個項目只有一次
subtract([a,b,c,d,c,c,d,e], [c,a], X).
X = [b, d, d, e].
,但我想減去+從+設置一次刪除每個項目。我的意思是,我想要
subtract([a,b,c,d,c,c,d,e], [c,a], X). to give
X = [b, d, c, c, d, e].
我該怎麼做?
當我使用的Prolog的內部謂詞「減/ 3」:在例如減(+套裝,+刪除,-Result):序言 - 減去每個項目只有一次
subtract([a,b,c,d,c,c,d,e], [c,a], X).
X = [b, d, d, e].
,但我想減去+從+設置一次刪除每個項目。我的意思是,我想要
subtract([a,b,c,d,c,c,d,e], [c,a], X). to give
X = [b, d, c, c, d, e].
我該怎麼做?
你可以建立你自己的程序來做到這一點。 例如:
subtract_once(List, [], List).
subtract_once(List, [Item|Delete], Result):-
(select(Item, List, NList)->
subtract_once(NList, Delete, Result);
(List\=[],subtract_once(List, Delete, Result))).
在每次迭代從項目列表採取一個項目刪除,並提取從輸入列表中的一個元素,然後繼續使用這兩個列表的其餘部分。
嘿,謝謝你的幫助。但是這個謂詞有一個問題。當我做? - subtract_once([a,a,b],[a,a,a],X)時,它給出X = [b]。但是我希望它在這種情況下是虛假的。我該如何解決這個問題? – void