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