我想從列表A和B中刪除每個第n個元素,它們與彼此的第n個元素不相對應。因此,例如:我列出了包含[1,2,3,4,5]
的列表A
和包含[1,2,2,4,7]
的列表B
。結果應該是包含[3,5]
的列表C
和包含[2,7]
的列表D
。我想出了這一小段代碼,但它還沒有正常工作。如何使用遞歸將多個頭添加到列表中
without_doubles([], [], [_], [_]).
without_doubles([H|T1], [H|T2], C, D):-
without_doubles(T1, T2, C, D).
without_doubles([H1|T1], [H2|T2], [H1|C], [H2|D]):-
without_doubles(T1, T2, C, D).
取而代之的是[3,5]
和[2,7]
的,我越來越[3,5,_G2442]
和[2,7,_G2445]
。我知道這可能很容易解決,但我似乎無法弄清楚。感謝您提前幫助我!
什麼的'_'s在'without_doubles([],[],[_],[_])'幹什麼? –
我個人認爲基礎案例必須描述遞歸的目標狀態。所以A和B是空的,C和D包含一些隨機變量(如'_')。 – Boomer
Prolog中沒有真正的「輸入」和「輸出」。你也可以用相反的方式查詢。不幸的是,我看到很多人認爲Haskell/Prolog解釋器做了很多不可思議的事情。事實上,解釋器的工作方式非常簡單(儘管優化過程非常複雜)。下劃線只是一個匿名變量。你可以寫'without_double([],[],[A],[B])''。以及。 –