小编use*_*666的帖子

将列表元素的连续重复包装到子列表中

我需要一些帮助.我搜索了数据库,我发现有一个问题已经被问到这个例子,但答案并没有真正帮助我,所以我想发布我自己的问题.

任务是将列表元素的连续副本打包到子列表中:

% ?- 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的情况).第二个没有,我真的不知道为什么.有人可以帮助我,并根据我的解决方案解释问题?

谢谢

list prolog

5
推荐指数
1
解决办法
2710
查看次数

标签 统计

list ×1

prolog ×1