【发布时间】:2020-04-18 18:19:12
【问题描述】:
所以我有 2 个列表,当连接时它应该返回如下所示的列表
| ?- 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 的新手,所以我不确定我哪里出错了,任何帮助都将不胜感激
【问题讨论】: