Q
僅查找列表
2
A
回答
2
這裏是一個 「經典的Prolog」 的方式做到這一點:
find([], []).
find([H|T], [H|NewT]) :-
number(H),
find(T, NewT).
find([H|T], NewT) :-
\+ number(H),
find(T, NewT).
有3項條款。
1st表示對於一個空列表結果是一個空列表。
第二說:如果輸入列表的第一個元素(頭,H
)是一個數字,保持它在輸出中,和輸出的剩餘部分(新尾,NewT
)是find
施加到的其餘部分輸入列表(尾部,T
)。
第3個子句與第2個子句在結構上相似,但是如果它不是數字,則表示不保持頭部。
2
如果您正在使用SWI-Prolog的,你會很高興使用include/3
謂詞像這樣:
find_numbers(M,O) :-
include(number,M,O).
3
這裏的另一種方法,使用findall/3
這是大多數的Prolog實現可用。但對於初學者來說,謝爾蓋的答案對於初學者來說可以說是最適合學習基本遞歸列表處理是如何工作的。
find(M, O) :-
findall(X, (member(X, M), number(X)), O).
相關問題
- 1. 查找列表
- 2. 查找列表
- 3. 查找列表
- 4. 查找列表
- 5. 查找列表
- 6. 查找列表
- 7. 查找列表
- 8. 查找列表
- 9. 查找列表
- 10. 查找列表
- 11. 查找列表
- 12. 查找列表
- 13. 查詢僅重複列表
- 14. cakephp查找列表
- 15. 查找從列表
- 16. 僅支持查找
- 17. 查找列表中的子列表
- 18. 在列表python中查找列表
- 19. 在cakephp中查找列表
- 20. Python來查找列表
- 21. 斯卡拉 - 查找列表
- 22. 列表查找算法
- 23. 查找列表(jQuery的)
- 24. 查找列表元素
- 25. 查找實數列表
- 26. 查找表格中的列?
- 27. Angularfire從查找列表
- 28. tkinter optionmenu查找excel列表
- 29. 查找排序列表
- 30. Linq查找動態列表
到目前爲止您嘗試過什麼?我們喜歡幫助首先幫助自己的人:) – 2014-10-28 21:15:35