我需要一些帮助.我搜索了数据库,我发现有一个问题已经被问到这个例子,但答案并没有真正帮助我,所以我想发布我自己的问题.
任务是将列表元素的连续副本打包到子列表中:
% ?- pack([a,a,a,a,b,c,c,a,a,d,e,e,e,e],X).
% X = [[a,a,a,a],[b],[c,c],[a,a],[d],[e,e,e,e]].
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
pack([], []).
pack([X], [[X]]).
pack(Liste, Ergebnis):-
Liste = [H, T|TS],
H \= T,
pack([T|TS], Ergebnis1),
append([[H]], Ergebnis1, Ergebnis).
pack([H, H|HS], Ergebnis):-
pack([H|HS], Ergebnis1),
append([H|HS], Ergebnis1, Ergebnis).
Run Code Online (Sandbox Code Playgroud)
第一种情况非常有效(H\= T的情况).第二个没有,我真的不知道为什么.有人可以帮助我,并根据我的解决方案解释问题?
谢谢