Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 将2个列表与包含2个列表元素的每个不同顺序的第三个列表合并_List_Prolog - Fatal编程技术网

List 将2个列表与包含2个列表元素的每个不同顺序的第三个列表合并

List 将2个列表与包含2个列表元素的每个不同顺序的第三个列表合并,list,prolog,List,Prolog,所以我有两个列表,当连接时,它应该返回如下所示的列表 |?-concat([a,b,c],[1,2,3,4],X)。 X=[a,b,c,1,2,3,4] X=[a,b,1,c,2,3,4] X=[a,b,1,2,c,3,4] X=[a,b,1,2,3,c,4] X=[a,b,1,2,3,4,c] … 所以我写了这段代码来回答这个问题: concat([], Y, Y). concat([E|X], Y, [E|Z]) :- concat(X,Y,Z). concat(X, Y, [Y|X]

所以我有两个列表,当连接时,它应该返回如下所示的列表

|?-concat([a,b,c],[1,2,3,4],X)。

X=[a,b,c,1,2,3,4]

X=[a,b,1,c,2,3,4]

X=[a,b,1,2,c,3,4]

X=[a,b,1,2,3,c,4]

X=[a,b,1,2,3,4,c]

所以我写了这段代码来回答这个问题:

concat([], Y, Y).
concat([E|X], Y, [E|Z]) :- concat(X,Y,Z).
   concat(X, Y, [Y|X]).
但我把它作为输出

?-concat([a,b,c],[1,2,3,4],X)。

X=[a,b,c,1,2,3,4]

X=[a,b,c[1,2,3,4]

X=[a,b,[1,2,3,4],c]

X=[a[1,2,3,4],b,c]

X=[[1,2,3,4],a,b,c]。


我是Prolog新手,所以我不确定我到底出了什么问题,希望您能提供帮助

您的问题在第三行:

concat(X, Y, [Y|X]).
[Y | X]
不是一个包含
Y
所有元素的列表,后跟
X
的所有元素,它是一个列表,其第一个元素是list
Y
,其余元素是X的元素

我的代码如下所示:

concat([], [], []).
concat([E|X], Y, [E|Z]) :- concat(X,Y,Z).
concat(X, [F|Y], [F|Z]) :- concat(X,Y,Z).

你的第一行是
concat([],Y,Y)。
很好,但我认为我的方法更整洁,更对称,作为归纳的基本情况。

谢谢你,我知道我现在错在哪里了。它还帮助我做了其他我正在尝试的事情。