Prolog,将列表拆分为两个列表 [英] Prolog, split list into two lists
本文介绍了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屋!
查看全文