如果我在Prolog中有一个列表,例如X = [1, 2, 3, 4, 6, 7]
,如何将元素5添加到列表中以获得X = [1, 2, 3, 4, 5, 6, 7]
?
答案 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] ?