2013-02-22 33 views
1

我是新来的序言和希望得到以下问题的任何帮助:Prolog的结合两份名单

我需要写一个接受两个列表,并首先附加第二和显示这个新的列表和其长度的程序。我知道prolog可能有一些内置的函数来使这更容易...但我不想使用它们。

如:newlist([a,b,c],[d,e,f],L3,Le).将返回L3=[a,b,c,d,e,f]Le=6

这是我到目前为止有:

newlist([],List,List,0) 

newlist([Element|List1],List2,[Element|List3],L) :- newlist(List1,List2,List3, LT), L is LT + 1. 

这并不正确的追加,但我只能得到第一个列表的长度,而不是组合名单。有没有办法让我将第二个列表的长度添加到第一个列表中以获得组合列表长度?

谢谢,如果这个问题相当简单,我很抱歉......我是新的。

回答

2

有没有办法让我把第二个列表的长度加到第一个来得到组合列表的长度?

,就应该替换:

newlist([],List,List,0). 

有:

newlist([],List,List,X):-length(List,X). 
+0

不幸的是,当我这样做,我得到一个存在的差错。你是否假设我已经定义了长度? – ilikecats 2013-02-22 07:19:13

+0

它是大多数序言环境中的内置谓词。然而,如果不是,你可以用与newlist相似的方式来定义它。 – 2013-02-22 07:25:42

+0

谢谢,先生。已解决。 :) – ilikecats 2013-02-22 07:28:29