我想做的代码是关于我们的,我们有一个包含一些元素的列表,我们有一个元素称为Element1,还有第二个元素称为Element2
。
这样的想法是,在列表中的每个Element1
后面插入一个Element2
。
因此我们可以称谓语insert(L,E1,E2,NL)
:如果NL
是在每个E2
元素后面插入E1
元素的列表,则为true。
这是我的代码:
insert([],_,_,[]).
insert([C|R],E1,E2,NL):-
C\==E1,
!,
insert(R,E1,E2,NNL),
NL = [C|NNL].
insert([E1|R],E1,E2,NL):-
insert(R,E1,E2,NNL),
NL = [E1,E2|NNL].
问题是,这个答案是否应咨询
insert([a,b,c,d,a,e,f,a,g],a,1,L).
给我这个:
L = [a, 1, b, c, d, a, 1, e, f|...].
我不知道他们为什么要放那个...
答案应该是:
L = [a, 1, b, c, d, a, 1, e, f, a, 1, g]
我正在使用SWI-Prolog-Editor