Prolog,将列表拆分为两个列表 [英] Prolog, split list into two lists

查看:47
本文介绍了Prolog,将列表拆分为两个列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

列表有问题.我需要做的是将一个列表 [1,-2,3,-4] 拆分成两个列表 [1,3][-2,-4].我的代码如下所示:

lists([],_,_).列表([X|Xs],Y,Z):- 列表(Xs,Y,Z), X>0 ->追加([X],Y,Y);追加([X],Z,Z).

我得到了

Y = [1|Y],Z = [-2|Z].

我做错了什么?

解决方案

参考:

域列表=整数*谓词拆分(列表,列表,列表)条款分裂([],[],[]).split([X|L],[X|L1],L2):-X>=0,!,分裂(L,L1,L2).拆分([X|L],L1,[X|L2]):-分裂(L,L1,L2).

<块引用>

输出:

目标: split([1,2,-3,4,-5,2],X,Y)
解决方案: X=[1,2,4,2], Y=[-3,-5]

看看,如果这有帮助.

I got a problem with lists. What I need to do is to split one list [1,-2,3,-4], into two lists [1,3] and [-2,-4]. My code looks like the following:

lists([],_,_).
lists([X|Xs],Y,Z):- lists(Xs,Y,Z), X>0 -> append([X],Y,Y) ; append([X],Z,Z).

and I'm getting

Y = [1|Y],
Z = [-2|Z].

What am I doing wrong?

解决方案

Refer this:

domains
    list=integer*

predicates
    split(list,list,list)
clauses
    split([],[],[]).
    split([X|L],[X|L1],L2):-
        X>= 0,
        !,    
        split(L,L1,L2).

    split([X|L],L1,[X|L2]):-
        split(L,L1,L2).

Output :

Goal: split([1,2,-3,4,-5,2],X,Y)
Solution: X=[1,2,4,2], Y=[-3,-5]

See, if that helps.

这篇关于Prolog,将列表拆分为两个列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆