我需要像这样合并两个列表L1 = [1,2,3]和L2 = [a,b]:M = [1,a,2,b,3]。 如何在PROLOG中做到这一点?如何合并PROLOG中的列表?
回答
你可以尝试
m2([A|As], [B|Bs], [A,B|Rs]) :-
!, m2(As, Bs, Rs).
m2([], Bs, Bs) :- !.
m2(As, [], As).
你可以看看这个链接:Prolog program to merge two ordered lists
这不会给你所需要的输出,但它是一个开始。
经过一番尝试,这里是正确的答案,比我提出的原始(测试和工作)更简单。
mergelist_alternate([],[],[]).
mergelist_alternate([X],[],[X]).
mergelist_alternate([],[Y],[Y]).
mergelist_alternate([X|List1],[Y|List2],[X,Y|List]) :- mergelist_alternate(List1,List2,List).
你可以这样调用:
mergelist_alternate([1,2,3],[a,b],L),!.
这个未经测试的代码不起作用。 – 2013-04-10 13:05:39
代码审查和重写和测试。 – racribeiro 2013-04-11 09:53:59
merge_list([],L,L).
merge_list([H|T],L,[H|M]):-
merge_list(T,L,M).
它将工作。 100%测试!
Input: merge_list([1,2],[3,4],M).
Output: M=[1,2,3,4].
这不是被问到的。 – AndrewB 2015-12-23 22:13:40
- 1. Prolog的合并列表
- 2. Prolog合并两个列表
- 3. Prolog中列表的并置
- 4. Prolog中的复合术语和列表
- 5. 合并备用元件从两个列表中的Prolog
- 6. 如何处理java中的prolog列表
- 7. 如何替换Prolog中的列表?
- 8. 如何删除prolog中的子列表?
- 9. 在Prolog中将两个列表合并到一起订购
- 10. 如何处理prolog列表?
- 11. 如何合并列表中的项目
- 12. 如何合并列表中的帧?
- 13. 如何在Prolog中找到最佳列表组合
- 14. 如何在Prolog中返回列表?
- 15. 如何在prolog中追加列表?
- 16. 如何在prolog中拆分列表?
- 17. 如何解析列表并在Prolog中形成一个数字?
- 18. 如何读取数组“列表”并在prolog中打印?
- 19. Prolog的差异列表 - 归并
- 20. 如何在Rails表中合并列?
- 21. SWI-Prolog的:在列表中
- 22. Prolog中的列表操作
- 23. Prolog中的列表搜索
- 24. Prolog中的列表移位
- 25. Prolog中的逆向列表
- 26. Prolog的列表中添加
- 27. Prolog中的列表长度
- 28. Prolog中的大小列表
- 29. 在Prolog中使用列表的列表
- 30. 列表中的Prolog追加列表
这工作。如果你能给我几个声望点,我总共有15个,我甚至可以给这个答案+1。 :)但是'!'是什么意思?请问请问? – 2013-04-11 06:27:18
这是(着名)**切**。以前是在一定程度上控制Prolog执行的唯一(!)方法。它承诺所做的选择。 – CapelliC 2013-04-11 12:00:20