因此,如果輸入爲L = [1,[2,3,4],5],輸出應該是R = [4,5]。 在常規列表中最後一個元素的代碼是最後一個元素
last([X],X].
last([H|T],X):-last(T,X).
因此,如果輸入爲L = [1,[2,3,4],5],輸出應該是R = [4,5]。 在常規列表中最後一個元素的代碼是最後一個元素
last([X],X].
last([H|T],X):-last(T,X).
這不完全是優雅的Prolog,但我認爲它會做你想要什麼:
deeplast([L], X) :-
deeplast(L, X).
deeplast([X], X) :-
atomic(X).
deeplast([H|T], X) :-
atomic(H),
deeplast(T, X).
deeplast([H|T], X) :-
compound(H),
deeplast(H, Y),
deeplast(T, Z),
X = [Y, Z].
不起作用:'? - deeplast([1,[2,3,4]],R)。 R = [2,3,4]' – CapelliC 2013-02-17 07:45:09
非常真實,我沒有提到列表中的最後一個詞是複合詞的情況。我認爲編輯後的版本現在涵蓋了這種情況。 – 2013-02-17 10:21:00
是什麼結果[1, [2,3]]? 「好的...請解決方法?」當然不是有答案的好方法! – joel76 2013-02-16 13:50:15
您是否指所有嵌套級別的所有子列表中的所有最後元素?這對於@ joel76的例子來說就是[1,3]? – 2013-02-16 14:09:26
對於l = [1,[2,3]],r = [1,3],是的,亞歷山大。 – 2013-02-16 15:53:02