Prolog - 如何将元素插入列表

时间:2016-04-05 07:47:08

标签: prolog

如果我在Prolog中有一个列表,例如X = [1, 2, 3, 4, 6, 7],如何将元素5添加到列表中以获得X = [1, 2, 3, 4, 5, 6, 7]

3 个答案:

答案 0 :(得分:0)

第一个参数:" new"元件

第二个参数:旧列表

第三个参数:带有" new"的新列表元件

addElement(X, [], [X]). 
addElement(X, [Y | Rest], [X,Y | Rest]) :- X @< Y, !.
addElement(X, [Y | Rest1], [Y | Rest2]) :- addElement(X, Rest1, Rest2).

样本用法:

?- addElement(5,[1,2,3,4,6,7], X).
X = [1, 2, 3, 4, 5, 6, 7].

?- addElement(5,[1,2,3,4,6,7], [1,2,3,4,5,6,7]).
true.

?- addElement(5,[1,2,3,4], [1,2,3,4,5]).
true .

?- addElement(5,[1,2,3,4], [1,2,3,5]).
false.

?- addElement(5,X, [1,2,3,5]).
X = [1, 2, 3] ;

答案 1 :(得分:0)

SortedList将是您正在寻找的结果。

append([1,2,3,4,6,7], [5], Z), sort(Z, SortedList).

答案 2 :(得分:0)

为我工作,X 是要插入位置 Y 的元素。

addE(X,1,[G|T],[G,X|T]):-write(hello).
addE(X,Y,[H|T],[H|T1]):-Y1 is Y-1,addE(X,Y1,T,T1).


?-addE(10,3,[1,2,3,4,6,7], X).
X = [1,2,3,10,4,6,7] ?